我的数组值如下: -
$Array1 = array("myfirst_value", "mysecond_value", "mythird_value"}
现在我的另一个数组,列表随机出现如下: -
$Array2 = array
(
[4] => myfirst_value
[8] => myforth_value
[21] => mysecond_value
[7] => myfifth_value
[17] => mysixth_value
[20] => mythird_value
[16] => myseventh_value
)
我希望实现的是$ Array2根据$ Array1中的值的顺序进行排序。
所以,我希望$ Array2得到排序并成为: -
$Array2 = array
(
[4] => myfirst_value
[21] => mysecond_value
[20] => mythird_value
[7] => myfifth_value
[8] => myforth_value
[16] => myseventh_value
[17] => mysixth_value
)
注意,Array1的值先排序,其余的输出没有任何顺序。
由于
答案 0 :(得分:1)
如果我理解正确
Array
(
[4] => myfirst_value
[21] => mysecond_value
[20] => mythird_value
[8] => myforth_value
[7] => myfifth_value
[17] => mysixth_value
[16] => myseventh_value
)
结果
FOSRestBundle
答案 1 :(得分:1)
您也可以将uasort()
功能用作
uasort($Array2, function($a,$b) use (&$Array1){
foreach($Array1 as $key => $value){
if($a == $value){
return 0;
break;
}
if($b == $value){
return 1;
break;
}
}
if($a == $b){ return 0;} return ($a < $b) ? -1 : 1;
});
答案 2 :(得分:0)
除了泼水的完美答案外,这也有效: -
$Sorted_Array = array_merge(
array_intersect($Array1, $Array2),
array_diff($Array2, $Array1)
);