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

时间:2015-09-30 15:26:18

标签: php for-loop

如何在使用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

如何让代码检查最后一个循环?谢谢。

2 个答案:

答案 0 :(得分:4)

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>";
}

答案 1 :(得分:0)

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

$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>";
}