1

这是我的数组

$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'));

排序$items category依据的方法是$soryBy什么?我可以使用任何现有的 php 函数吗?谢谢

4

1 回答 1

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 及更高版本。

于 2013-07-08T03:28:40.690 回答