Другие языки программирования и технологии

программисты, помогите начинающему в самом простом примере с переменными в PHP

$a = 2;

$b = 3;

echo $c = $a+$b;

я одного не пойму, почему если до оператора echo яне задавал переменную $c вообще, то почему он высветил резльтат ее? как по мне так должно было быть так:

$a = 2;
$b = 3;
$c = $a+$b;
echo $c = $a+$b;
Zamiq Shireliyev
Zamiq Shireliyev
610
Все ответы правдив на половину - сейчас я вам представлю факты по чему нет ошибки !

У каждого операнда есть свой личный приоритет скажем приоритет умножения выше чем приоритет сложения или вычетания !

когда ты пишешь строку

echo $c = $a+$b;

компилятор ее разлаживает на действия по приоритету - скажу что приоритет присвоения (=) стоит на самом последнем месте а сложение стоит выше вот копилятор и начинает с него

$a+$b - далее копилятор ищет следующее действо по приоритету нежи чем сложение и находит


$c =


тоесть нужно создать отсек памяти и присвоить ему результат - тут то и создается переменная (о выводе компилятор еще ничего не подозревает на тот момент)

когда компилятор сделал присвоение то обработка продолжается и он натыкается на

echo $c


ну тут все понятно - так что это сделано просто для удобства записи и читабельности кода

Ах да в php не компелятор все проверяет а серверная программа - но принцип везде один !
Вадим Гончаров
Вадим Гончаров
28 931
Лучший ответ
Константин Якушев Компилятор преобразует человеку понятный код в самостоятельный машинный код. PHP - интерпритатор. Т. е. смотрит, че написано, и принимает решение, чего делать. Трактовать его работу "по принципу" компилятора, как минимум, не корректно.
Если вы написали $c - это и есть объявление переменной. Где бы вы это ни написали (ну, только в кавычках если, не сработает) .
Если написали $c = чему-то - вы ей это что-то присвоили.

Какая разница, где? После echo все работает так же, как и до него, ежели не в кавычках.
Aydin Mextiev
Aydin Mextiev
69 595
В php явно задавать переменные не обязательно. Первое упоминание переменной в присвоениях и есть ее объявление.

А вот если напишите:
if ($a > $c) echo "Пипец рулю";
то выдаст ошибку
Zamiq Shireliyev http://writecodeonline.com/php/

проверил, не выдало. только добавил точку с запятой