PHP 数组:循环数组,直到值为空


PHP Array: Loop Array until the value is empty

所以,我构建了一个小的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);
        }
  }
}
}

你永远循环,因为

  1. while 循环中的条件不正确。(根据您的情况只有在两个数组都变为空后,循环才会完成。
  2. 取消设置数组变量时出现问题。
  3. 您正在将值推入错误的变量。

您不会从数组中解开值,只是在循环中取消设置局部变量。您可以使用 $key=>$value 获取对循环数组的引用,如下所示:

foreach ($Var_2 as $key=>$value) {
        echo "$value, ";
        if ($value == 3) {
            unset($Var_2[$key]);
        } elseif ($value == 1) {
            array_push($Var1, $value);
        }
  }