重新排序数组元素

时间:2014-03-04 15:14:16

标签: php arrays

我有这个数组数组

  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]

问题是我无法弄清楚如何做到这一点所以请帮助

4 个答案:

答案 0 :(得分:1)

您可以查看Array Sorting,然后找出'ksort'是您的选择; - )

答案 1 :(得分:1)

你需要做

ksort($array['login']);

这将对数组键进行排序,使它们升序。如果你想让它们下降你会做

krsort($array['login']);

PHP有许多方便的函数来排序数组

答案 2 :(得分:0)

在二级数组上尝试PHPs ksort函数:http://php.net/ksort

它将按键对数组进行排序,同时保持key-data-associations

答案 3 :(得分: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