繁体   English   中英

如何基于对象键-PHP中的值对对象数组进行排序?

[英]How to sort an Array of Objects based on object key - values in PHP?

给定一个对象数组,其中数组中的每个对象如下所示:

  "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排序,然后再按$data->rating->stars进行排序,其中stars是0到5之间的数字?

我在这里看到了有关array_multisort()的答案。

但我不确定它能否达到我的期望。

欢迎任何想法或见解。

使用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"));

注意:“ cmp”是可调用的函数(必须用于PHP> 5.3)

解码此json时,也许应该使用$ assoc参数。 它将以数组而不是对象的形式为您提供数据,以便您可以对该数组进行排序。 json_decode

$array1 = json_decode($input, TRUE);

我认为,如果您在php中阅读了对象迭代 ,它也会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM