PHP按子阵列键组排序数组

时间:2014-02-24 22:44:32

标签: php arrays

我正在尝试将带有子阵列的变量数组元素称为$ list,其子序列如下:

$list = array(
    1 => array('number' => 1),
    2 => array('title' => 'Title One'),
    3 => array('text' => 'Text One'),

    4 => array('title' => 'Title Two'),
    5 => array('number' => 2),
    6 => array('text' => 'Text Two'),

    7 => array('text' => 'Text Three'),
    8 => array('title' => 'Title Three'),
    9 => array('number' => 3),
);

如何将它们分组到

Array
(
    [0] => Array
        (
            [number] => 1
            [title] => Title One
            [text] => Text One
        )

    [1] => Array
        (
            [title] => Title Two
            [number] => 2
            [text] => Text Two
        )

    [2] => Array
        (
            [text] => Text Three
            [title] => Title Three
            [number] => 3
        )

)

重要提示:

  1. 子阵列键可以是任何字符串,而不仅仅是“标题”,“文本”,“数字”。意思是我可以有一个或多个元素,在这种情况下,它不是预定义为3('title','text','number')。
  2. 每个[0],[1],[2] ......组中的结果顺序无关紧要,只要它们组合在一起。

2 个答案:

答案 0 :(得分:0)

试试这个,

array_chunk($列表中,如图3所示,TRUE);

答案 1 :(得分:0)

您可以执行以下操作:

$keyCount = array();
$finalArray = array();

foreach($list as $value) {
    $temp = key($value);
    $currentKey = $temp[0];
    $count = isset($keyCount[$currentKey]) ? $keyCount[$currentKey]: 0;
    $keyCount[$currentKey] = $count + 1;
    $finalArray[$count] = isset($finalArray[$count]) ? $finalArray[$count] : array();
    $finalArray[$count][$currentKey] = $value[$currentKey];
}