根据另一个数组对嵌套数组进行排序

时间:2013-07-08 03:20:47

标签: php sorting multidimensional-array

这是我的阵列

$items = array( "100"=>
    array(
        'id' => 15,
        'category' => array('id'=>'100010'),
        'description' => array('type'=>'Drink'),
    ),
    "101"=>
    array(
        'id' => 13,
        'category' => array('id'=>'100055'),
        'description' => array('type'=>'Fruit'),
    ),
    "102"=>
    array(
        'id' => 21,
        'category' => array('id'=>'100002'),
        'description' => array('type'=>'Vege'),
    )
);

$soryBy = array(array('id'=>'100055'),array('id'=>'100002'),array('id'=>'100010'));

根据$itemscategory $soryBy进行排序的方法是什么?我可以使用任何现有的PHP功能吗? 谢谢

1 个答案:

答案 0 :(得分:2)

你要做的第一件事就是弄平你的$ sortBy数组

$sortBy = array_map(function($a) { return $a["id"]; }, $sortBy);

然后你可以使用带闭包的usort

usort($items, function($a, $b) use ($sortBy) {
      return array_search($a["category"]["id"], $sortBy) - array_search($b["category"]["id"], $sortBy);
});

请注意,此解决方案适用于PHP 5.3及更高版本。