如何解决为什么我的 while 循环迭代是 15 次而不是 10 次?
<?PHP
$i = 0;
$j = array('U1','U2','U3','U4','U5');
while ($i <= 10) {
foreach ($j as $value) {
$i++;
echo "$i $value <br>";
}
}
?>
//输出 1 U1 2 U2 3 U3 4 U4 5 U5 6 U1 7 U2 8 U3 9 U4 10 U5 11 U1 12 U2 13 U3 14 U4 15 U5
我希望我的循环迭代是 10 次
解决方法
因为你在while循环中使用了foreach循环。就在第三个循环之前 $i 实际上小于或等于 10。但是随后您对数组运行 foreach 循环。我建议只使用基本的 for 循环。它还会使代码看起来更简洁。
for ($i = 0; $i < count($j)*2; $i++)
{ //execute code
}
这将确保数组的迭代恰好运行 10 次。此解决方案仅在数组大小不变且不发生变化的情况下才有用。
,您的循环运行了 15 次,因为它是 2 个循环。它实际上不是运行 15 次,而是 3 次。那是因为每次运行它时,它都会打印整个数组。因此,对于每个数组项,$i
增加 5。让我解释一下:
- 您将
$i
设置为 0 - 您设置了一个包含 5 个项目的数组
- 当
$i
小于或等于 10 时,您:- 对于数组的每个项目(在您的情况下为 5 次),请执行以下操作:
- 将
$i
增加 1 - 打印
$i
和您正在读取的数组项的键。
- 将
- 对于数组的每个项目(在您的情况下为 5 次),请执行以下操作:
所以每次运行 foreach 循环时 $i
都会增加 5。
要解决此问题:
不要使用 for() 循环。只需这样做:
<?php
$i = 1;
$j = array('U1','U2','U3','U4','U5');
while ($i <= 10) {
foreach ($j as $value) {
echo "$i $value <br>";
$i++;
}
}?>
那么发生了什么变化? $i
从 1 开始,打印后增加。输出:
1 U1
2 U2
3 U3
4 U4
5 U5
6 U1
7 U2
8 U3
9 U4
10 U5
--已解决--
另一种解决方案是从 0 开始 $i
并在打印之前增加它。代码:
<?php
$i = 0;
$j = array('U1','U5');
while ($i < 10) {
foreach ($j as $value) {
$i++;
echo "$i $value <br>";
}
}?>
输出:
1 U1
2 U2
3 U3
4 U4
5 U5
6 U1
7 U2
8 U3
9 U4
10 U5
,
你应该开始初始化 $i = 1 而不是 $i = 0 您可以通过更改循环中的值来检查自己。 例如,在您的代码中放置 i
在增加 i 值后也打印了值。
这是上述问题的解决方案。
<?php
$i = 1;
$j = array('U1','U5');
while ($i <= 10) {
foreach ($j as $value) {
echo "$i $value <br>";
$i++;
}
}
?>
输出
1 U1
2 U2
3 U3
4 U4
5 U5
6 U1
7 U2
8 U3
9 U4
10 U5
,
请在下面按照您的期望运行的代码。
<?php
$i = 0;
$j = array('U1','U5');
foreach ($j as $value) {
while ($i < 10) {
$i++;
echo "$i $value <br>";
}
}
?>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。