根据键值使用 usort 对 PHP JSON 嵌套数组进行升序排序

Sort a PHP JSON nested array in ascending order with usort according to a key value

我的 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 答案中提到的解决方案,但它们似乎不适用于我的情况。

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

Try this code snippet here

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