所以,我构建了一个小的php数组循环。目标是:当数组值之一为空时,循环将结束。
这是代码:
<?php
if(isset($_POST['submit'])) {
$Var_1 = array('Manggo_1' => rand(1, 3),
'Manggo_2' => rand(1, 3),
'Manggo_3' => rand(1, 3),
'Manggo_4' => rand(1, 3),
'Manggo_5' => rand(1, 3),
'Manggo_6' => rand(1, 3)
);
$Var_2 = array('Manggo_7' => rand(1, 3),
'Manggo_8' => rand(1, 3),
'Manggo_9' => rand(1, 3),
'Manggo_10' => rand(1, 3),
'Manggo_11' => rand(1, 3),
'Manggo_12' => rand(1, 3)
);
while (!(empty($Var_1) && empty($Var_2))) {
foreach ($Var_1 as $value) {
echo "$value, ";
if ($value == 3) {
unset($value);
} elseif ($value == 1) {
array_push($Var2, $value);
}
}
foreach ($Var_2 as $value) {
echo "$value, ";
if ($value == 3) {
unset($value);
} elseif ($value == 1) {
array_push($Var1, $value);
}
}
}
}
所以,这就是我所有的php代码,如果$value == 3
,我想销毁值,if == 1
,我想将值插入到另一个数组中。循环,直到其中一个数组为空。
问题是:如何打印/回显每次循环迭代的结果(单击提交按钮后),直到其中一个数组值为空?我总是永远循环往复。
谢谢。
while (!empty($Var_1) && !empty($Var_2)) {
foreach ($Var_1 as $key=>$value) {
echo "$value, ";
if ($value == 3) {
unset($Var_1[$key]);
} elseif ($value == 1) {
array_push($Var_2, $value);
}
}
foreach ($Var_2 as $value) {
echo "$value, ";
if ($value == 3) {
unset($Var_2[$key]);
} elseif ($value == 1) {
array_push($Var_1, $value);
}
}
}
}
你永远循环,因为
- while 循环中的条件不正确。(根据您的情况只有在两个数组都变为空后,循环才会完成。
- 取消设置数组变量时出现问题。
- 您正在将值推入错误的变量。
您不会从数组中解开值,只是在循环中取消设置局部变量。您可以使用 $key=>$value 获取对循环数组的引用,如下所示:
foreach ($Var_2 as $key=>$value) {
echo "$value, ";
if ($value == 3) {
unset($Var_2[$key]);
} elseif ($value == 1) {
array_push($Var1, $value);
}
}