Этот код работает

<?php 
    for ($x = 0; $x <= 10; $x++) {
        echo "The number is: $x <br>";
    } 
?> 

Но если вместо "<=" я использую просто "=" php попадает в бесконечный цикл, который тайм-аут

<?php 
        for ($x = 0; $x = 10; $x++) {
            echo "The number is: $x <br>";
        } 
?>

Это ожидаемое поведение?

0
user85063 5 Дек 2014 в 21:14
1
Вы не используете = для сравнения, а == или ===. Но в этом случае ваш цикл вообще не запустится, так чего же вы пытаетесь достичь?
 – 
jeroen
5 Дек 2014 в 21:16

2 ответа

Да, это ожидаемо.

Вы должны использовать <= вместо = только

<= — это оператор сравнения: http://php.net/manual/en/ язык.операторы.comparison.php

= является оператором присваивания: http://php.net/manual/en/language .operators.assignment.php

0
Hamza 5 Дек 2014 в 21:18
Как насчет ==, что действительно следует использовать OP, если они хотят увидеть, равно ли значение. Хотя я знаю, что это вообще не будет зацикливаться, потому что средняя часть цикла for никогда не будет истинной.
 – 
Jonathan Kuhn
5 Дек 2014 в 21:22
Спасибо за быстрый отзыв - в настоящее время я изучаю php и частично знал о сравнении/назначении, но почему он вообще не работает с == ? $x никогда не определялся раньше и определяется как 0 для начала здесь, так почему же он никогда не равен 10?
 – 
user85063
5 Дек 2014 в 21:50
Только что понял - с == он работает, только если x равен 10, что не так - исходит из VBA, где логика цикла for будет FOR x = 0 TO 10 - это меня смутило. Спасибо еще раз
 – 
user85063
5 Дек 2014 в 21:57

Да, вы используете оператор присваивания вместо оператора сравнения. Теперь нет никакого способа, чтобы этот цикл закончился.

2
John Conde 5 Дек 2014 в 21:15