0

さまざまな数のトップレベル配列を持つ次のような配列があります。

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
        )
)

?目的は、出力のテーブルの各行の新しい配列をトラバースすることです。

4

2 に答える 2

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];
    }
}
于 2013-01-19T19:00:24.953 に答える
1

foreach以外のオプションはありますか

あまり

反復のように見えることは、for/foreachループを使用することを意味します。

つまり、配列を再フォーマットする必要がある場合(shiplu.mokadd.imの回答に注意)、次のようなコードが必要になります。

$result = array();
foreach($input as $i => $row) {
    foreach($row as $key => $value) {
        $result[$key][$i] = $value;
    }
}
于 2013-01-19T19:04:51.917 に答える