Короткая логика if-else - PullRequest
       2

Короткая логика if-else

0 голосов
/ 22 марта 2011

Почему это

$count = 0;
   echo $count === 0
    ? 'zero'
    : $count === 1
     ? 'one'
     : 'more';

эхо 1? Разве это не должно отражать ноль?

Ответы [ 2 ]

3 голосов
/ 22 марта 2011

используйте скобки!

echo ($count === 0 ? 'zero' :($count === 1 ? 'one': 'more') );

Причина, по которой ваша версия отображает 'one', заключается в том, что php считает, что 1-й ? является частью оператора, поэтому, если $count равен нулю, сделайте последнюю возможную вещь (последнюю ?), которая будет 'one'

читать это

1 голос
/ 22 марта 2011

Хотя это довольно короткий список значений, вы можете альтернативно использовать карту:

$map = array("zero", "one", "more");
echo $map[min($count,2)];     // trick: 2 becomes max value via min()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...