0

下面提供的代码是我真实代码的摘要。我想使用多个循环将多个数组中的项目添加到最终数组中。但我也想多次添加相同的值,因此将所有内容包装在另一个循环中。听起来很乱,但我认为代码解释得很好。为什么我只能从一个循环中得到结果?换句话说,为什么$total只包含六个元素一六而不是 30 个元素(一六五次),正如人们对 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);
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

那是因为您已经在循环中声明了数组。每次循环再次开始时,数组都会被重置为空值,因此最终的循环值会显示在结果中。

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

$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 回答