给定一个对象数组,其中数组中的每个对象如下所示:
"success": true,
"data": [
{
"doctor_id": 4, -- Use this id for getting in method get inquiry doctor offers.
"clinic": "John",
"distance": "10 mile"
"city": "Los Angeles",
"price": "123",
"photo": false,
"rating": {
"stars": null,
"reviews": null
},
"add_info"=> "Some information",
"time_after_create": 942 -- in seconds.
}
]
在PHP中是否有任何方法允许我按$ data->价格从低到高排序从高到低排序,然后按$data->rating->stars
排序,其中星号是0到5之间的数字?
我看了一下here的答案array_multisort()。
但我不确定它是否能达到我想要的效果。
欢迎任何想法或见解。
答案 0 :(得分:1)
使用usort,这是一个例子:
function cmp($a, $b)
{
return strcmp($a->name, $b->name);
}
usort($your_data, "cmp");
在您的情况下,我可以快速提出以下解决方案:
function cmp($a, $b)
{
if ($a->price == $b->price) {
return 0;
}
return ($a->price < $b->price) ? -1 : 1;
}
usort($your_data, array($this, "cmp"));
注意:&#34; cmp&#34;是可调用的函数(它必须用于PHP&gt; 5.3)
答案 1 :(得分:0)
也许你应该在解码这个json时使用$ assoc参数。它会将数据作为数组而不是对象提供给您,以便您可以对该数组进行排序。
json_decode
$array1 = json_decode($input, TRUE);
如果你在php中阅读Object Iteration,我认为它也会有所帮助。