Почему верна продукция 'эха? ' a': верный? ' b': ' c''; ' b'?

У меня есть эта часть кода PHP:

echo true ? 'a' : true ? 'b' : 'c';

Продукция этого:

b

Но продукция, которую я ожидал, была:

a

4
nl ja de
php.net/manual/en/language.operators.comparison.php#example-‌ ​ 121
добавлено автор deceze, источник
Don' t тернарные операторы гнезда.... это делает ваш код нечитабельным, и хорошо зарегистрировано как плохая практика потому что логика doesn' t выполняют как you' d ожидают
добавлено автор Mark Baker, источник
@Femaref - It' s все еще зарегистрированное поведение, и еще намного тяжелее читать, чем вложенная IFS
добавлено автор Mark Baker, источник
Простое троичное легче прочитать...., вложенные ternaries - not' t, и все еще подвергаются большому количеству беспорядка по их поведению (следовательно этот вопрос среди многих).... и если я когда-нибудь вижу вложенный ternaries, используемый в коде I' m рассматривающий для вербовки, тогда тот человек никогда не получал бы работу в моей компании
добавлено автор Mark Baker, источник
@MarkBaker: That' s только потому, что condtional оператор в PHP правоассоциативен. Другие языки нормальны, и продукция как ожидалось.
добавлено автор Femaref, источник
@MarkBaker that' s очень субъективный. Лично я думаю троичное?: легче читать, чем вложенная IFS, если условия и результаты коротки.
добавлено автор Magnus, источник
эхо (верный? ' a': (верный? ' b': ' c'));
добавлено автор user1646111, источник

2 ответы

тернарный оператор в PHP левоассоциативен.

Необходимо использовать

echo true ? 'a' : (true ? 'b' : 'c');
11
добавлено

Поскольку ваш код оценивает как это:

echo (true ? 'a' : true) ? 'b' : 'c';

это эквивалентный:

echo (true) ? 'b' : 'c';

Then the result is 'b'

2
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp