0

Array_mergeとarray_merge_recursiveが期待どおりに機能せず、配列を一緒にプッシュしてインデックス番号を保持する代わりに、より多くのインデックスを作成します。入力/目的の出力については、以下を参照してください。

Array (
    [0] => array(
        [0] => "string1",
        [1] => "string2",
        [2] => "string3"
    ),
    [1] => array(
        [0] => "string4",
        [1] => "string5",
        [2] => "string6"
    ),
    [2] => array(
        [0] => "string7",
        [1] => "string8",
        [2] => "string9"
    )
)

必要な出力:

Array (
    [0] => array("string1","string4","string7"),
    [1] => array("string2","string5","string8"),
    [2] => array("string3","string6","string9")

)

編集:

おそらく最良の例ではありません。同じ結果を達成したいのですが、ネストされた各配列のキーの数が等しくありません。より良い例については、以下を参照してください。

<?php
$array = Array (
[0] => array(
    [0] => "string1",
    [1] => "string2",
    [2] => "string3"
    ),
[1] => array(
    [0] => "string4",
    [1] => "string5",
    [2] => "string6"
    ),
[2] => array(
    [0] => "string7",
    [1] => "string8",
    [2] => "string9"
    ),
[3] => array(
    [0] => "string10",
    [1] => "string11",
    [2] => "string12"
    )
);

$output=array();
    for($0=0;$j<count($array[0]);$j++){
        $output[$j] = array();
    }

for($i=0;$i<count($array);$i++){
    for($0=0;$j<count($array[0]);$j++){
        $output[$j] = array_push($output[$j],$column_values[$i][$j]);
    }
}


?>

しかし、これを行うと、$ output配列で正しい数のキーを取得しますが、それらにはすべてbool(false)が含まれています。何か助けはありますか?

これが望ましい出力です。

Array (
    [0] => array("string1","string4","string7","string10"),
    [1] => array("string2","string5","string8","string11"),
    [2] => array("string3","string6","string9","string12")
)
4

3 に答える 3

1

これは、この配列構造のためだけに配列を作成するためのものであるため、必要に応じてコードのデパンディングを変更できます...

<pre>
<?php
    $array = array(array("string1","string2","string3"),array("string4","string5","string6"),array("string7","string8","string9"));
    $output=array();
    for($i=0;$i<count($array[0]);$i++){
        for($j=0;$j<count($array[0]);$j++){
            $output[$i][$j] = $array[$j][$i];
        }
    }

    print_r($output);
?>
</pre>
于 2012-05-24T18:50:04.930 に答える
0

とった。最後のループはarray_push($output[$j],$column_values[$i][$j]);、変数を設定しようとするのではなく、単に行う必要があります$output[$j] = array_push(Yadda,yadda)

于 2012-05-25T19:25:58.427 に答える
0

これはあなたの「2番目の」状況のためです:

<?php

    $array = array(array("string1","string2","string3"),array("string4","string5","string6"),array("string7","string8","string9"),array("string10","string11","string12"));
    $output=array();

    for($i=0;$i<count($array[0]);$i++){
        for($j=0;$j<=count($array[0]);$j++){
            $output[$i][$j] = $array[$j][$i];
        }
    }
    print_r($output);
?>
于 2012-05-25T22:51:40.013 に答える