如何在php中使用for循环时检查最后一个循环


How to check for last loop when using for loop in php?

使用for循环php时如何检查最后一个循环?

这是我的代码,但不起作用。

$x = "10";
for ($i = 0; $i < $x; $i++) {
    if ($i != '$x - 1') {
        echo "$i no last";
    } else {
        echo "$i last";
    }
    echo "<br/>";
}
?>

当我测试它的回波

0 last
1 no last
2 no last
3 no last
4 no last
5 no last
6 no last
7 no last
8 no last
9 no last

如何对最后一个循环进行代码检查?非常感谢。

PHP中除了字符串还有其他数据类型。你所做的是字符串的比较,而不是实际数字的比较。

$x = "10";不会将$x设置为10,而是将"10"设置为1和0组成的字符串。这不一定具有数值10。

然后,您的比较会获取此字符串,并使用表达式'$x - 1'将其与循环的计数器变量进行比较。这是这里最重要的事情。PHP不会替换单引号字符串中的变量。下面是一个比较示例:

$foo = 42;
echo '$foo Bar'; // Output: $foo Bar
echo "$foo Bar"; // Output: 42 Bar

所以,基本上,if条件所做的就是检查循环的计数器是否不等于'$x - 1'。比较字符串的工作方式与比较数字完全不同,在这种情况下,它根本不是您想要的。(尤其是因为如果您不熟悉类型,PHP的等式(==(和不等式运算符(!=(有时会表现得出乎意料。(

意外地,PHP试图尽可能多地帮助您,这就是for循环工作的原因。在那里你可以把一个数字比作一个字符串。这没有道理,但PHP让它为您工作。;(

只需将所有内容都用作数值,而不使用字符串表示法:

<?php
$x = 10;
for($i=0; $i < $x; $i++)
{
    if($i != ($x - 1)) {
        echo $i."no last";
    } else {
        echo $i."last";
    }
    echo "<br>";
}

试试这个,你应该得到所需的输出

$x = "10";
for($i=0;$i<$x;$i++)
{
    if($i!= $x - 1 ) {
        echo $i."no last";
    } else if($i == $x - 1) {
        echo $i."last";
    }
    echo "<BR>";
}