微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的 while 循环迭代是 15 次而不是 10 次?

如何解决为什么我的 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。让我解释一下:

  1. 您将 $i 设置为 0
  2. 您设置了一个包含 5 个项目的数组
  3. $i 小于或等于 10 时,您:
    1. 对于数组的每个项目(在您的情况下为 5 次),请执行以下操作:
      1. $i 增加 1
      2. 打印 $i 和您正在读取的数组项的键。

所以每次运行 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 举报,一经查实,本站将立刻删除。