php从子阵列键中制作一组子数组

时间:2013-01-19 18:46:39

标签: php arrays

我有一个数组如下,有不同数量的顶级数组:

Array
(
    [1534] => Array
        (
            [userid] => 1534
            [a1] => 3
            [a2] => 6
            [a3] => 5
            [groupID] => 2
            [total] => 109
        )

    [1535] => Array
        (
            [userid] => 1535
            [a1] => 6
            [a2] => 4
            [a3] => 1
            [groupID] => 2
            [total] => 125
        )
)

除了foreach之外还有其他选择吗:

Array
{
    [userid] => Array
        (
            [1534] => 1534
            [1535] => 1535
        )

    [a1] => Array
        (
            [1534] => 3
            [1535] => 6
        )


    [a2] => Array
        (
            [1534] => 6
            [1535] => 4
        )


    [a3] => Array
        (
            [1534] => 5
            [1535] => 1
        )


    [groupID] => Array
        (
            [1534] => 2
            [1535] => 2
        )


    [total] => Array
        (
            [1534] => 109
            [1535] => 125
        )
)

?目的是遍历输出

中表的每一行的新数组

2 个答案:

答案 0 :(得分:3)

您不需要更改布局只是为了遍历它。它可以在不改变的情况下完成。

$keys = array_keys(current($array));
$len = count($array);

foreach($keys as $key){
// Access the key first 
    for($i=0;$i<$len; $i++){
    // access the row later
        echo $array[$i][$key];
    }
}

答案 1 :(得分:1)

  

除了foreach

之外还有其他选择吗?

不是真的

你想要做的任何事情看起来像迭代意味着使用for / foreach循环。

即。如果您确实需要(请注意shiplu.mokadd.im的答案)重新格式化数组,您需要一些代码,如下所示:

$result = array();
foreach($input as $i => $row) {
    foreach($row as $key => $value) {
        $result[$key][$i] = $value;
    }
}