Сколько операторов допускается при использовании тернарных операторов (? И :) в PHP? - PullRequest
0 голосов
/ 11 ноября 2011

Этот код,

count = $a > $b ? $b : $a;

, такой же, как:

if($a > $b){
   count = $b;
} else {
   count = $a;
}

Если я хочу сделать это,

if($a > $b){
   count = $b;
   result = $b." is less than ".$a;
} else {
   count = $a;
}

Как мне написать их, используятроичный оператор ? : ...?

Ответы [ 5 ]

1 голос
/ 11 ноября 2011

Вы можете поместить все это в одну строку, но это трудно прочитать и, вероятно, не будет работать все время.

Ради того, чтобы показать вам это работает:

$a = 7;
$b = 5;

$count = 0;
$result = '';

$count = ($a > $b) ? ((int)$result = $b . ' is less than ' . $a) : $a;

echo $count . '<br />' . $result;

Но, пожалуйста, никогда не делайте этого ни в каком реальном коде - это сделает вас очень непопулярными среди тех, кому приходится работать над одним и тем же кодом с вами / после вас.

Если вам нужно использовать троичный оператор в реальном коде, сделайте это, как предложили другие.

0 голосов
/ 11 ноября 2011

Почему вы спрашиваете, как сделать ваш код хуже?
Какой смысл делать код полностью нечитаемым?

Не пытайтесь помещать много операторов в троичный оператор.
Не используйте вложенные троичные операторы.

Вы можете не только писать свой код как можно быстрее, но иногда вам нужно прочитать его .

Вместо использования этого уродливого синтаксиса используйте общий условный оператор.

0 голосов
/ 11 ноября 2011

Вы действительно не можете, это не главное для троичного оператора.Вам придется сделать два утверждения или выписать if else.

$count = $a > $b ? $b : $a;
$a > $b ? result = $b." is less than ".$a : ;

Что, на мой взгляд, является верным PHP.Возможно, вам понадобится несколько паренов, и вам может понадобиться ввести фиктивную константу после двоеточия во второй строке - просто 0, чтобы PHP что-то делал.Я не уверен, потому что я не PHP.

0 голосов
/ 11 ноября 2011
$result = ($a > $b) ? ("$b is less than $a") : ("$a is less than $b");
$count = ($a > $b) ? $b : $a;
0 голосов
/ 11 ноября 2011
count = $a > $b ? $b : $a;
result = count == $b ? $b . " is less than " . $a : ""; 

Вы не можете сделать это в одной строке. К сожалению.

...