Я встречал такой синтаксис: var == ""? "-": вар. Может кто-нибудь объяснить? - PullRequest
3 голосов
/ 06 мая 2009

Код такой:

$vendors[] = array(
    "id" => $row['vendorID'],
    "name" => $row['name'] == "" ? "-" : $row['name'],
    "tel1" => $row['phone1'] == "" ? "-" : $row['phone1'],
    "tel2" => $row['phone2'] == "" ? "-" : $row['phone2'],
    "mail" => $row['email'] == "" ? "-" : $row['email'],
    "web" => $row['web'] == "" ? "-" : $row['web']);

Может кто-нибудь объяснить мне, что это такое? Выглядит как Альтернативный синтаксис , но мне не удалось найти информацию.

Спасибо тебе

Ответы [ 5 ]

24 голосов
/ 06 мая 2009

Это троичный оператор :

Выражение (expr1) ? (expr2) : (expr3) оценивается в expr2, если expr1 оценивается в TRUE, и expr3, если expr1 оценивается в FALSE.

4 голосов
/ 06 мая 2009

Это означает: если значение равно «» (пусто), то установить «-» (дефис), в противном случае установить все равно.

Просто прочитайте a? B: c как «если a, то b, иначе c».

3 голосов
/ 06 мая 2009

Да, это то, что говорят другие, но это не очень рекомендуется с точки зрения читабельности кода. Используйте это с осторожностью и не используйте это без скобок вокруг условия.

$myvar = ($condition == TRUE) ? $valueIfTrue : $valueIfFalse;

вместо

if ($condition)
{
    $myvar = $valueIfTrue;
}
else
{
    $myvar = $valueIfFalse;
}
1 голос
/ 06 мая 2009

Это то, что PHP настаивает на вызове "троичного оператора" - см. http://www.phpbuilder.com/manual/language.operators.comparison.php для синтаксиса и примера.

0 голосов
/ 06 мая 2009

Вы также можете сделать это как "name" => $row['name'] == "" ?? "-"

т.е. a == b ?? c, так что если a = b истинно, используйте else, используя c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...