我有这个数组:
@android
这个数组:
$categories = array(1,19,4,33,10,7,12);
我想要的是$order = array(33,12,50,19,4,1,100,18,9,2,7);
按照$categories
prefined
的方式进行排序。所以我需要的结果是:
$order
您可能已经注意到,$categories_sorted = array(33,12,19,4,1,7,10);
不在10
。这是因为$order
数组中从不包含所有类别,只有最重要的类别。 $order
数组应始终包含$categories_sorted
中的所有值,即使它们不在$categories
中。
答案 0 :(得分:0)
我希望这能实现你的挑战:
$categories = array(1, 19, 4, 33, 10, 7, 12);
$order = array(33, 12, 50, 19, 4, 1, 100, 18, 9, 2, 7);
$categories_sorted = array();
// first: sort what is in $categories based on $order
foreach($order as $key => $value) {
if(in_array($value, $categories)) $categories_sorted[] = $value;
}
// then add what is in $categories but bot in $order
foreach($categories as $key => $value) {
if(!in_array($value, $order)) $categories_sorted[] = $value;
}
答案 1 :(得分:0)
您可以使用php的uasort
功能
$categories = array(1, 19, 4, 33, 10, 7, 12);
$order = array(33, 12, 50, 19, 4, 1, 100, 18, 9, 2, 7);
uasort($categories, function($a, $b)use(&$order) {
foreach ($order as $key => $value) {
if ($a == $value) {
return 0;
break;
}
if ($b == $value) {
return 1;
break;
}
}
});
print_r($categories);