2014-03-04 90 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