我的PHP中有以下JSON数组
{
"responseHeader": {
"type": "Places",
"status": "200",
"message": "Places fetched"
},
"Places_nearby": [{
"place_name": "blueblue",
"place_rating": "5"
},
{
"place_name": "qwer",
"place_rating": "10"
},
{
"place_name": "mvb",
"place_rating": "0.6"
},
{
"place_name": "tyu",
"place_rating": "25"
},
{
"place_name": "erty",
"place_rating": "1"
},
{
"place_name": "Malabar Adukkala",
"place_rating": "7"
}
],
"Google_places_most_rated": [{
"place_name": "Malabar Adukkala",
"place_rating": "5"
},
{
"place_name": "Malabar Adukkala",
"place_rating": "5"
}
]
}
我需要通过增加“place_rating”的值来对其中的“Places_nearby”数组进行排序。
我所做的是在我的代码中解码JSON,
json_decode($json,true)
然后按如下方式使用usort
function sortfunction($a, $b) {
return strcasecmp($a['place_rating'], $b['place_rating']);
}
usort($data['Places_nearby'], 'sortfunction');
但没有任何反应。
如何重写usort函数,或者我是否要编写自定义函数来对数组进行排序?我认为如果PHP有一些内部运动机制,那将比我能编写的其他方法更快。
P.S:我已经尝试过其他SO答案中提到的解决方案,但它们似乎与我的情况无关。
答案 0 :(得分:1)
我们在这里使用usort
进行排序。
usort($array["Places_nearby"],function($value1,$value2){
return $value1["place_rating"]>$value2["place_rating"];
});
print_r($array);