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

时间:2011-12-08 20:14:06

标签: php arrays sorting multidimensional-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对第二个数组进行排序。

最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

假设带有ID的数组名为$order,带有值的数组名为$items

$keys = array_flip($order);

usort($items, function($a, $b) use($keys)
{
    return $keys[$a['id']] - $keys[$b['id']];
});