2016-07-28 244 views
-1
 { "result": true,  
     "users": [{   
        "id": 11, 
        "expected_count": 13, 
        "user_id": 1, 
        "event_id": 2, 
        "user": {  
         "id": 1, 
         "name": "Moiz Jamali"  
        } 
      }, 
     {  
      "id": 12, 
      "expected_count": 12, 
      "user_id": 2, 
      "event_id": 2,  
      "user": {  
         "id": 2, 
         "name": "Juzer Samiwala"  
      } 
     }] 
} 

在我的大陣列('用戶')的輸出之上。根據大陣列中另一個陣列的值對大陣列排序

我想要做的是根據PHP中小數組('user')內部的名稱值對這個大數組('用戶')進行排序。

任何人都可以幫助我嗎?

謝謝。

回答

0

您可以使用usortstrcmp。事情是這樣的:

$bigArray = ["result" => true, "users" => [ 
    "id" => 11, 
    "expected_count" => 13, 
    "user_id" => 1, 
    "event_id" => 2, 
    "user" => [ 
     "id" => 1, 
     "name" => "Moiz Jamali" 
    ], 
    ... other users 
]]; 

usort($bigArray['users'], function ($a, $b) 
{ 
    return strcmp($a['user']['name'], $b['user']['name']); 
}); 
+0

非常感謝。它像一個魅力:) – Pops

0

你有用戶usort()用自己的函數來排序您的陣列

解決方案:

<?php 

$data = json_decode('{ "result": true, "users": [{ "id": 11, "expected_count": 13, "user_id": 1, "event_id": 2, "user": { "id": 1, "name": "Moiz Jamali" } }, { "id": 12, "expected_count": 12, "user_id": 2, "event_id": 2, "user": { "id": 2, "name": "Juzer Samiwala" } }] }'); 


function cmp($a, $b) 
{ 
    if ($a->user->name == $b->user->name) { 
     return 0; 
    } 
    return ($a->user->name < $b->user->name) ? -1 : 1; 
} 


usort($data->users, "cmp"); 

print_r($data); 

Live example