PHP中的foreach和for循环

时间:2011-06-12 14:09:17

标签: php

正在研究php循环,我发现自己需要编写一个嵌套循环bur,当我尝试组合foreach和for循环时它会产生意外的结果 这是我的代码

       foreach ($district_ward as $key => $value) {
           $ward_ids = array_keys($district_ward[$key]);
           echo $key;
           for ($x = 0; $x < count($ward_ids)-1; $x++) {
               $district_village[$key]= array_merge($value[$ward_ids[$x]], $value[$ward_ids[$x+1]]);
           }               
        }

这给了我这个

347

但是当我在for循环中打印$ key的值时,就是

        foreach ($district_ward as $key => $value) {
           $ward_ids = array_keys($district_ward[$key]);
           for ($x = 0; $x < count($ward_ids)-1; $x++) {
   echo $key;
               $district_village[$key]= array_merge($value[$ward_ids[$x]], $value[$ward_ids[$x+1]]);
           }
        }

我明白了

3

3 个答案:

答案 0 :(得分:2)

我只是猜测你的第二和第三阵列只有一个条目。循环的条件指定$x < count($ward_ids) - 1。如果您的数组只有一个条目, one - 1 将使其循环0次。换句话说,你的内部循环根本不会被执行。

答案 1 :(得分:0)

您是否将此打印到html页面?你的钥匙是3,4和7吗?如果你回到html页面,它们将显示为347。试试

echo "$key<br />\n"; 

甚至

echo "<pre>".print_r($district_ward)."</pre>";
在循环之前

查看数组的外观。

答案 2 :(得分:0)

 foreach ($district_ward as $key => $value) {
       $ward_ids = array_keys($district_ward[$key]);
       for ($x = 0; $x < count($ward_ids); $x++) {
           echo $key;
           $district_village[$key]= array_merge($value[$ward_ids[$x]], $value[$ward_ids[$x+1]]);
       }
    }

应该这样做,这是因为你从0开始,直到$ ward_ids的数量 假设您的$ ward_ids有1个条目,那么你将0到0循环,所以根本没有循环, 并且假设它有102个条目,那么你可以循环1-101,从0开始就留下102个。