如何使用PHP按键值对json数组值进行排序

时间:2017-05-23 06:40:32

标签: php arrays json sorting multidimensional-array

我需要一个帮助。我需要按照键值对json数组进行排序,并使用php调整大小。我在下面解释我的代码。

$skillArr=array(array("type"=>1,"name"=>"aaa"),array("type"=>2,"name"=>"bbb"),array("type"=>1,"name"=>"ccc"),array("type"=>3,"name"=>"ddd"),array("type"=>2,"name"=>"eee"),array("type"=>1,"name"=>"fff"));
echo json_encode($skillArr);
?>

上面的数组给出了以下输出。

[{"type":1,"name":"aaa"},{"type":2,"name":"bbb"},{"type":1,"name":"ccc"},{"type":3,"name":"ddd"},{"type":2,"name":"eee"},{"type":1,"name":"fff"}]

在这里,我需要按照type value对此数组进行排序。我的预期输出如下。

[{"type1":[{"type":1,"name":"aaa"},{"type":1,"name":"ccc"},{"type":1,"name":"ff"}],"type2":[{"type":2,"name":"bbb"},{"type":2,"name":"eee"}],"type3":[{"type":3,"name":"ddd"}]}]

排序后输出数组应如上所示。请帮帮我。

1 个答案:

答案 0 :(得分:2)

您可以使用usort对数组进行排序。

$skillArr=array(array("type"=>1,"name"=>"aaa"),array("type"=>2,"name"=>"bbb"),array("type"=>1,"name"=>"ccc"),array("type"=>3,"name"=>"ddd"),array("type"=>2,"name"=>"eee"),array("type"=>1,"name"=>"fff"));
usort($skillArr, function($a, $b){return $a['type'] - $b['type'];});
echo json_encode($skillArr);