根据PHP上的另一个数组对数组的元素进行排序
考虑到一个数组的元素比另一个数组的元素少,如何根据另一个数组对数组进行排序根据PHP上的另一个数组对数组的元素进行排序,php,arrays,sorting,Php,Arrays,Sorting,考虑到一个数组的元素比另一个数组的元素少,如何根据另一个数组对数组进行排序 // correct order $order = ['aaa', 'ccc', 'bbb']; // my array $items = [ 'key_one' => 'ccc', 'key_two' => 'aaa', 'key_three' => 'ccc', 'key_four' => 'bbb', 'key_five' => 'aaa' ]
// correct order
$order = ['aaa', 'ccc', 'bbb'];
// my array
$items = [
'key_one' => 'ccc',
'key_two' => 'aaa',
'key_three' => 'ccc',
'key_four' => 'bbb',
'key_five' => 'aaa'
];
// the result I want
$items = [
'key_two' => 'aaa',
'key_five' => 'aaa'
'key_one' => 'ccc',
'key_three' => 'ccc',
'key_four' => 'bbb'
];
我尝试过使用array\u merge和array\u combine,但键数不同,我不知道如何操作。使用以下代码:
try to use the code below
$items = [
'key_one' => 'ccc',
'key_two' => 'aaa',
'key_three' => 'ccc',
'key_four' => 'bbb',
'key_five' => 'aaa'
];
$order = ['aaa', 'ccc', 'bbb'];
$newArray = [];
foreach ($order as $order) {
foreach($items as $key => $item){
if($item == $order){
$newArray[$key] = $item;
}
}
}
print_r($newArray);
$items = [
'key_one' => 'ccc',
'key_two' => 'aaa',
'key_three' => 'ccc',
'key_four' => 'bbb',
'key_five' => 'aaa'
];
function list_cmp($a, $b)
{
$order = ['aaa', 'ccc', 'bbb'];
foreach($order as $key => $value)
{
if($a==$value)
{
return 0;
break;
}
if($b==$value)
{
return 1;
break;
}
}
}
uasort($items, "list_cmp");
print_r($items);
asort的问题在于它是按字母顺序排列的,而不是按照我建立的顺序。asort返回aaa,bbb,ccc,而不是aaa,ccc,bbb。很好,您需要通过另一个数组附加该数组。结果是:数组([key\u-two]=>aaa[key\u-five]=>aaa[key\u-one]=>ccc[key\u-three]=>ccc[key\u-four]=>bbb)