PHP FOR Iteration не повторяется - PullRequest
0 голосов
/ 09 января 2019

Кто-нибудь знает, почему цикл for в PHP не работает должным образом? Пожалуйста, проверьте следующее:

проверенная документация и гугл об операторах: 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 голосов
/ 09 января 2019

Ваш цикл не повторяется, потому что условный сбой - «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, как в вашем примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...