0

以下に提供されているコードは、私の実際のコードの要約です。複数のループを使用して、複数の配列から最終的な配列にアイテムを追加したいと思います。しかし、同じ値を複数回追加したいので、すべてを別のループにラップします。面倒に聞こえますが、コードはそれをうまく説明していると思います。1つのループからのみ結果を取得するのはなぜですか?言い換える$totalと、forループで予想されるように、なぜ6つの要素が1〜6であり、30の要素が含まれていない(1〜6が5回)のでしょうか。

for ($counter = 1; $counter < 5; $counter++) {
     $first_arr = array('one', 'two', 'three');
     $second_arr = array('four', 'five', 'six');

    $total = array();

    foreach ($first_arr as $x) {
        $total[] = $x;
    }

    foreach ($second_arr as $x) {
        $total[] = $x;
    }
}
var_dump($total);
4

4 に答える 4

5

$total外側のループの各反復でリセットしているためです。外側のループの前に宣言すると、問題は解決します。

そのようです:

$total = array();
$first_arr = array('one', 'two', 'three');
$second_arr = array('four', 'five', 'six');

for ($counter = 1; $counter < 5; $counter++) {
    // assuming $first_arr and $second_arr have numerical keys
    // which they do, in this example
    $total = array_merge($total, $first_arr, $second_arr);
}

var_dump($total);
于 2013-01-21T12:45:09.777 に答える
1

次の行をforループの外側に配置します

 $total = array();
于 2013-01-21T12:47:23.237 に答える
0

いくつかの変更を加えるだけです....そしてそれは機能します

for ($counter = 1; $counter < 5; $counter++) {
 $first_arr = array('one', 'two', 'three');
 $second_arr = array('four', 'five', 'six');

$total = array();
$i = 0;

foreach ($first_arr as $x) {
    $total[$i] = $x;
    $i++;
}

foreach ($second_arr as $x) {
    $total[$i] = $x;
    $i++;
}
}
var_dump($total);

それが役に立てば幸い..

于 2013-01-21T12:47:32.113 に答える
0

これは、ループ内で配列をデクレアしたためです。ループが再開するたびに、配列はnull値でリセットされるため、最終的なループ値が結果として表示されます。

これらをループの外側でデクレアすると、正常に機能します。

$first_arr = array('one', 'two', 'three');
$second_arr = array('four', 'five', 'six');
    for ($counter = 1; $counter <= 5; $counter++) {
        foreach ($first_arr as $x) {
            $total[] = $x;
        }


        foreach ($second_arr as $x) {
            $total[] = $x;
        }
    }
于 2013-01-21T12:53:40.607 に答える