PHP对多维数组按其他数组排序


PHP sort multidimensional array by other array

我有一个数组的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']];
});