【问题标题】:Sort a PHP JSON nested array in ascending order with usort according to a key value使用usort根据键值对PHP JSON嵌套数组进行升序排序
【发布时间】: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


【解决方案1】:

这里我们使用usort 进行排序。

Try this code snippet here

usort($array["Places_nearby"],function($value1,$value2){
  return  $value1["place_rating"]>$value2["place_rating"];
});
print_r($array);

【讨论】:

  • @AshifShereef 欢迎朋友... :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-26
  • 2023-03-31
  • 2012-01-29
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多