2014-03-04 115 views
1

我有此陣列陣列重新排序的數組元素

array (size=2) 
    'login' => 
    array (size=3) 
     20 => 
     array (size=1) 
      0 => 
      object(File)[3] 
     10 => 
     array (size=1) 
      0 => 
      object(Database)[4] 
     5 => 
     array (size=1) 
      0 => 
      object(Closure)[5] 

我試圖重新排序鍵的在第二級陣列的位置(在那裏說20,10,5),因此結果應該是

array (size=2) 
     'login' => 
     array (size=3) 
      5 => 
      array (size=1) 
       0 => 
       object(File)[3] 
      10 => 
      array (size=1) 
       0 => 
       object(Database)[4] 
      20 => 
      array (size=1) 
       0 => 
       object(Closure)[5] 

的問題是,我無法弄清楚如何做到這一點,請幫助

+0

http://php.net/ksort – Cthulhu

+1

具體來說,'ksort($ yourArray [」登錄']);' –

+0

使用array_reverse($ array);或ksort – Mubo

回答

1

您需要做

ksort($array['login']); 

這將排序數組鍵,使其升序。如果你希望他們降,你會做

krsort($array['login']); 

PHP有很多方便的功能數組排序

0

嘗試PHP的第二個級別陣列ksort功能:http://php.net/ksort

它將由鍵同時保持關鍵數據的關聯

1

你可以在Array Sorting看看,並找出你的排序數組,即「ksort」是你的選擇;-)

0

PHP有a variety of array sorting functions

在你的情況下,最合適的似乎是ksort(),這是因此概括:

通過鍵排序的陣列,保持鍵數據的相關性。

正如評論中指出的那樣,您的特定示例已經與所需順序相反;如果這可以得到保證,您也可以使用array_reverse(),確保通過可選的$preserve_keys參數true

具體而言,您想要使用密鑰'login'重新排列子數組;假設你的整個陣列被稱爲$data,你想這樣寫:

ksort($data['login']); 
// note no need for an assignment, as PHP's sort functions act in-place 

或本:

$data['login'] = array_reverse($data['login'], true); 
// assign back to the original variable, as array_reverse() returns a new array