从几个循环中向数组添加项


Add items to array from several loops

下面提供的代码是我的实际代码的一个抽象。我想使用多个循环将多个数组中的项添加到最终数组中。但我还想多次添加相同的值,因此将所有内容包装在另一个循环中。这听起来很混乱,但我认为代码解释得很好。为什么我只能从一个循环中得到结果?换句话说,为什么$total只包含6个元素1 - 6,而不是30个元素(1 - 6 5次),就像人们对for循环所期望的那样?

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

因为您在外循环的每次迭代中都重置$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);

将下一行置于for循环之外

 $total = array();

只需做一些更改....它会工作的

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

这是因为你在循环中声明了数组。每次循环再次开始时,数组被重置为空值,因此最终的循环值显示在result中。

在循环外声明这些,它会正常工作,

$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;
        }
    }