PHP for迭代不迭代

Cri*_*fie 2 php perl for-loop

有谁知道为什么forPHP中的循环没有按预期工作?请检查以下内容:

检查文档和谷歌有关运营商: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++;

}   

?>
Run Code Online (Sandbox Code Playgroud)

for循环迭代没有,而while环路.预期的输出应该从Z- 迭代- AL,while循环正在执行此操作,但for循环不是迭代.

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

但是,将这些字母转换为数字时,for循环将与整数一起使用.

Ale*_*sky 5

你的循环没有迭代,因为条件失败 - 'Z'大于'AL'.你可以strnatcmp()用来完成你想要的:

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

输出:

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
Run Code Online (Sandbox Code Playgroud)

[编辑]实际上,呃,甚至没有必要,只检查不平等:

for ($x = $a; $x !== $b; $x++) {
Run Code Online (Sandbox Code Playgroud)

请注意,根据您所需的输出,这可能会给您一个错误.如果你想再多一次迭代,只需在循环之前碰撞$ b,或者像你的例子中那样使用while循环.