2017-05-26 132 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 ... :) –