下面提供的代码是我真实代码的摘要。我想使用多个循环将多个数组中的项添加到最终数组中。但我也想多次添加相同的值,因此将所有内容包装在另一个循环中。这听起来很混乱,但我认为代码解释得很好。为什么我只从一个循环得到结果?换句话说,为什么$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);
答案 0 :(得分: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);
答案 1 :(得分:1)
将以下行放在外面以进行循环
$total = array();
答案 2 :(得分: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);
希望有所帮助......
答案 3 :(得分: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;
}
}