【发布时间】:2015-06-08 21:23:58
【问题描述】:
我现在正在练习 foreach 和 for 循环,将它们结合起来会导致我意想不到的结果。下面是 for 循环语句中的 foreach 语句。
PHP:
<?php
$names = array("A", "B", "C", "D");
for ($i = 0; $i <= 3; $i++)
{
foreach ($names as $name)
{
echo "$name = $i ";
}
}
?>
输出:
A = 0 B = 0 C = 0 D = 0 A = 1 B = 1 C = 1 D = 1 A = 2 B = 2 C = 2 D = 2 A = 3 B = 3 C = 3 D = 3
预期输出:
A = 0 B = 1 C= 2 D = 3
请告诉我我做错了什么以及解决方案是什么。
PS:我不想使用数组键和值。 :)
【问题讨论】:
-
PS:我不想使用数组键
-
您正在运行嵌套循环,对于
for循环的每次迭代,foreach循环将迭代整个$names数组。所以你有 4 次外部迭代,3 次内部迭代,剩下 4x3 = 12echo调用。 -
@MarcB 我怎样才能只进行 1 次迭代?
-
删除
for循环。如果您只想打印 $names 数组,那么您只需要foreach。基本上你有一个杂货清单,上面写着“买面包、牛奶、鸡蛋”,然后你的另一半把你送到商店 4 次。所以你买了 4 次break/milk/eggs,最后想知道为什么你有 4 个面包、4 罐牛奶和 4 个鸡蛋盒。 -
我会移除外部循环并将 $i 计数器放在 FOREACH 内