我有一个数组的id看起来像
array(
0 => 12
1 => 30
2 => 50
3 => 11
4 => 22
5 => 45
[...]
)
和另一个看起来像
的多维数组array(
0 => array(
'id' => 12,
'title' => 'title 12',
),
1 => array(
'id' => 50,
'title' => 'title 50',
),
2 => array(
'id' => 11,
'title' => 'title 11',
),
3 => array(
'id' => 30,
'title' => 'title 30',
),
4 => array(
'id' => 45,
'title' => 'title 45',
),
5 => array(
'id' => 22,
'title' => 'title 22',
),
)
第二个数组的id对应第一个数组的值。我需要做的是根据子数组的id按照它们在第一个数组中的顺序对第二个数组进行排序。
最好的方法是什么?
假设包含id的数组命名为$order
,包含值的数组命名为$items
:
$keys = array_flip($order);
usort($items, function($a, $b) use($keys)
{
return $keys[$a['id']] - $keys[$b['id']];
});