我有以下json:
{
"ID":"4",
"name":"Gil",
"likes":0,
"Dec":"A Man"
},
{
"ID":"3",
"name":"Yoni",
"likes":3,
"Dec":"A child"
},
{
"ID":"6",
"name":"Roni",
"likes":1,
"Dec":"A woman"
}
我想根据喜欢从最高到最低重新排列它,结果将是:
{
"ID":"5",
"name":"Roni",
"likes":6,
"Dec":"A woman"
} ,
{
"ID":"3",
"name":"Yoni",
"likes":3,
"Dec":"A child"
},
{
"ID":"4",
"name":"Gil",
"likes":0,
"Dec":"A Man"
}
如何在php中重新排列?
答案 0 :(得分:5)
json_decode
/ json_encode
和usort
:
$array = json_decode($json_string, TRUE);
usort($array, function($a, $b) {
return $a['likes'] - $b['likes'];
});
echo json_encode($array, JSON_PRETTY_PRINT);
答案 1 :(得分:1)
$json = '[{
"ID":"4",
"name":"Gil",
"likes":0,
"Dec":"A Man"
},
{
"ID":"3",
"name":"Yoni",
"likes":3,
"Dec":"A child"
},
{
"ID":"6",
"name":"Roni",
"likes":1,
"Dec":"A woman"
}]';
$json_arr = json_decode($json, true);
usort(
$json_arr,
function($a, $b) {
if ($a['likes'] == $b['likes']) {
return 0;
}
return ($a['likes'] > $b['likes']) ? -1 : 1;
});
$json = json_encode($json_arr);