PHP FOR迭代未迭代

时间:2019-01-09 16:55:45

标签: php perl for-loop

有人知道为什么PHP中的for循环无法按预期工作吗?请检查以下内容:

检查过的文档和有关运营商的Google:http://php.net/manual/en/language.operators.increment.php

<?php
    $a = "Z";
    $b = "AL";

    echo $a."<br>".$b."<br>";

for ($x = $a; $x <= $b; $x++) {
    echo "The number is: $x <br>";
} 

while(true){
    if($a == $b)break;
    echo $a."<br>";
    $a++;

}   

?>

for循环没有迭代,而while循环却没有迭代。预期的输出应从Z-AL进行迭代,while循环正在执行此操作,但是for循环未进行迭代。

for循环应遵循Perl的迭代(http://php.net/manual/en/language.operators.increment.php),但显然AL不大于Z

但是,将这些字母转换为数字值时,for循环将与整数一起工作。

1 个答案:

答案 0 :(得分:5)

您的循环没有迭代,因为条件失败-“ Z”大于“ AL”。您可以使用strnatcmp()完成所需的操作:

for ($x = $a; strnatcmp($x, $b); $x++) {
    echo "The number is: $x\n";
}

输出:

The number is: Z
The number is: AA
The number is: AB
The number is: AC
The number is: AD
The number is: AE
The number is: AF
The number is: AG
The number is: AH
The number is: AI
The number is: AJ
The number is: AK

[EDIT]实际上,嗯,甚至没有必要,只需检查是否存在不平等:

for ($x = $a; $x !== $b; $x++) {

请注意,这可能会导致一个错误,具体取决于所需的输出是什么。如果您想再进行一次迭代,只需在循环前增加$ b,或者像示例中那样使用while循环。