2016-07-28 14 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"  
      } 
     }] 
} 

私のBig Array( 'users')の出力の上です。大きな配列の中の別の配列の値に従って、大きな配列をソートします。

私がしたいことは、PHPの小さな配列( 'user')の中にある名前の値に従ってこの大きな配列( 'users')をソートすることです。

誰もがこれで私を助けてくださいことはできますか?

ありがとうございます。

答えて

0

usortにはstrcmpを使用できます。このような何か:

$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

関連する問題