2016-11-08 3 views
2

Meine PHP-Array ($ array) ist wie folgt:Sortieren Multidimentional Array mit PHP

Array 
(
[channels] => Array 
    (
     [0] => Array 
      (
       [position] => 5 
       [id] => 11 
       [name] => AFK 
      ) 

     [1] => Array 
      (
       [position] => 1 
       [id] => 22 
       [name] => ARK 
      ) 

     [2] => Array 
      (
       [position] => 2 
       [id] => 33 
       [name] => ESO 
      ) 

     [3] => Array 
      (
       [position] => 4 
       [id] => 44 
       [name] => semi-afk 
      ) 

     [4] => Array 
      (
       [position] => 0 
       [id] => 55 
       [name] => SPACE 
      ) 

     [5] => Array 
      (
       [position] => 3 
       [id] => 66 
       [name] => Tanks & Ships 
      ) 

    ) 

[instant_invite] => 
[id] => 123 
[members] => Array 
    (
     [0] => Array 
      (
       [username] => Chartographer 
       [status] => online 
       [nick] => Chaz Rambone 
       [avatar_url] => https://cdn.discordapp.com/embed/avatars/0.png 
       [avatar] => 
       [discriminator] => 3270 
       [id] => 124 
      ) 

     [1] => Array 
      (
       [username] => Chukers 
       [status] => online 
       [mute] => 
       [suppress] => 
       [deaf] => 
       [channel_id] => 789 
       [game] => Array 
        (
         [name] => The Elder Scrolls Online 
        ) 

       [avatar_url] => https://cdn.discordapp.com/embed/avatars/1.png 
       [avatar] => 
       [self_deaf] => 
       [discriminator] => 9851 
       [self_mute] => 
       [id] => 456 
      ) 

    ) 

[name] => TEST 

)

ich von "Position" bei 0 und ASC beginnend sortieren möchten.

Ich habe einige der hier gefundenen Beispiele versucht, aber noch nicht bekommen. Usort und ein paar andere arbeiten nicht für mich. Sicher, es Syntax ist aber nicht sicher,

if ($array->channels) { 
    usort($array->channels, function($a, $b) { 
    return $a->position > $b->position ? 1 : -1; 
}); 
+1

'$ a [ 'Position'], $ b [ 'Position']'. '$ a' und' $ b' sind Arrays, keine Objekte. –

Antwort

0

Wie in den Kommentaren erwähnt wurde, versucht man, Objekt-Notation zu verwenden, aber Sie einen Array sind verweisen. The documentation hat sehr hilfreiche Beispiele.

usort($array['channels'], function($a, $b) { 
    return $a['position'] > $b['position'] ? 1 : -1; 
}); 

See this fiddle example.