2014-08-30 2 views
2

Выходом этого PHP утверждения:Выход этого PHP заявление

$a = 'a'; $b = 'b'; 

echo isset($c) ? $a.$b.$c : ($c = 'c').'d'; 

это показывает 'CD', но один вопрос здесь:

почему ($c = 'c') является 'c' ??

Каков порядок выполнения этого заявления? Это похоже на: echo ($c = 'c').'d';?

+1

Что еще вы ожидаете '($ c = 'c')' быть? –

+0

http://php.net/manual/en/language.operators.precedence.php first '(...)' then' .'. результат '($ c = 'c')' равен $ c (который равен теперь 'c') – AbcAeffchen

+0

Поскольку вы назначили '' c'' '$ c' – MH2K9

ответ

-1

Заказ: скобки, а затем снаружи. Это то же самое, что и:

$c = 'c'; 
$c = $c . 'd'; 
echo $c; 
+0

Второго присвоения $ c нет. –

+0

@OliCharlesworth Я знаю, я просто хотел разбить выражение в нескольких инструкциях для лучшего понимания. – v42

1

Прежде всего, вы используете тройной оператор? который похож на if ... else statement. , потому что переменная $ c не установлена, она выполняет ($c = 'c').'d', тогда она присваивает значение 'c' переменной $c и (поскольку присваивание выполняется в выражении) ($c = 'c') анализируется на 'c' в и выполняется конкатенирование.

на вопрос, почему ($ c = 'c') является 'c'. Это особенность php. он делает 2 вещи сразу. сначала он присваивает значение переменной $c, а затем, если используется в выражении, используется значение переменной $c.

0

Сначала он назначает 'c' на $c, затем объединяет его с 'd' и, наконец, перекликается с ним. Это все.

Смежные вопросы