【发布时间】:2017-05-26 04:03:16
【问题描述】:
我的 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 答案中提到的解决方案,但它们似乎不适用于我的案例。
【问题讨论】:
-
...以及其他上百万人...例如stackoverflow.com/questions/2699086/…
-
抱歉,这些数以百万计的解决方案不适用于我的情况。我已经给出了我测试的代码。抱歉可能重复。
-
这是另一个适用于您的情况以及许多其他情况的方法。 stackoverflow.com/a/17364128/2943403
-
如果您可以控制输入数组的结构并且可以在每个子数组中将
place_rating放在place_name之前,那么您可以简单地使用:sort($array["Places_nearby"]);,因为它将对第一个元素进行排序在子数组中。 Demo
标签: php arrays json sorting usort