2017-05-26 211 views
0

我在我的PHP以下JSON阵列排序PHP JSON嵌套数组按升序排列与usort根据键值

{ 
    "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" 


     } 

    ] 


} 

我需要通过增加值里面的“Places_nearby”数组进行排序“place_rating”。

我所做的就是在我的代码的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答案中提到的解决方案,但它们似乎不适用于我的案例。

+1

[排序的多维数组]的可能的复制(https://stackoverflow.com/questions/16002266/sorting-a-multi-dimensional-array) – mickmackusa

+1

...和一百万其他人......就像... https://stackoverflow.com/questions/2699086/sort-multi-dimensional-array-by-value/2699159#2699159 – mickmackusa

+0

对不起,但这些数以百万计的解决方案不适合我的情况。我已经给出了我测试过的代码。对不起,虽然可能有重复。 –

回答

1

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

Try this code snippet here

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

谢谢哥们!感谢一堆!我看不到我是怎么错过的...... –

+1

@AshifShereef welome friend ... :) –