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

时间:2016-03-19 17:53:33

标签: php arrays

所以,我构建了一个小的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,我想将值插入另一个数组。循环,直到其中一个数组为空。

问题是:如何打印/回显每次循环迭代的结果(点击提交按钮后),直到其中一个数组值为空? 我总是永远地循环。

感谢。

2 个答案:

答案 0 :(得分: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. 您正在将值推入错误的变量。

答案 1 :(得分:0)

您没有解决数组中的值,您只是在循环中取消设置局部变量。您可以使用$ key =&gt; $ value来获取返回循环数组的引用,如下所示:

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