Для шаблонного движка я хотел бы использовать сокращенное условие if.
Мне нужно проверить, если значение равно! = Null распечатать какую-нибудь строку, если истина.
Что я пробовал:
echo "test" ($user->affiliate_id !=null) ?
Понятия не имею, что написать за?
Линия $someVariable = $condition ? $valueA : $valueB
эквивалентно:
if ( $condition ) {
$someVariable = $valueA;
}
else {
$someVariable = $valueB;
}
Так что, в принципе, если условие TRUE
, $someVariable
примет первое значение после ?
условное обозначение. Если FALSE
, это займет второе значение (то, что после :
условное обозначение).
Там есть особый случай, когда вы можете не определите первое значение, и это так: $someVariable = $someValue ?: $someOtherValue
, Это эквивалентно:
if ( $someValue ) {
$someVariable = $someValue;
}
else {
$someVariable = $someOtherValue;
}
Так что если $someValue
оценивает TRUE
(любое значение, отличное от 0
оценивается в TRUE
), затем $someVariable
поймает это значение. В противном случае, он будет ловить $someOtherValue
,
Чтобы дать вам пример:
function printGender( $gender ) {
echo "The user's gender is: " . ( $gender == 0 ? "Male" : "Female" );
}
printGender(0); // Will print "The user's gender is: Male"printGender(1); // Will print "The user's gender is: Female"
Другой пример:
function printValuesStrictlyDifferentThanZero( $value ) {
echo "Value: " . ( $value ?: 1 );
}
printValuesStrictlyDifferentThanZero(0); // $value evaluates to FALSE, so it echoes 1
printValuesStrictlyDifferentThanZero(1); // $value evaluates to TRUE, so it echoes that $value
РЕДАКТИРОВАТЬ:
Оператор ?:
является НЕ называется ternary operator
, Существует несколько способов определения троичного оператора (оператора, который принимает три операнда). Это это троичный оператор, но не троичный оператор. Некоторые люди просто называют его троичным оператором, потому что они привыкли это делать, и, возможно, это единственный троичный оператор, широко известный в PHP, но троичный оператор гораздо более общий, чем этот.
Это имя условный оператор или, строго говоря, троичный условный оператор.
Давайте предположим, что я определил новый оператор с именем log base
который оценивает, встроенный, если логарифм числа $A
с базой $C
равно $B
с его синтаксисом вроде $correct = $A log $B base $C
и он возвращается TRUE
если логарифм правильный, или FALSE
если это не так.
Конечно, эта операция является гипотетической, но это является троичный оператор, так же, как ?:
, Я буду называть это оператор проверки логарифма.
Синтаксис должен быть таким
echo (condition) ? write if true code part here : write else part here
это означает, что в вашем случае это будет как
echo ($user->affiliate_id !=null) ? 'test' : 'not null'
Как упомянул @Federinco, он называется троичным оператором, официальные документы здесь: http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary
Тернарный оператор работает так:
condition ? true branch : false branch
Вот пример:
$cost = isset($discount) ? $total - $discount : $total;
В приведенном выше примере мы проверяем, была ли установлена скидка, и, если она была, мы удалили скидку из нашей текущей суммы, если нет, мы просто установили стоимость на общую сумму.
Есть и другие интересные вещи, которые вы можете сделать с помощью троичного оператора:
$name = $username ?: 'Guest';
В приведенном выше коде мы проверяем, $username
существует, если это мы устанавливаем $name
в $username
в противном случае мы устанавливаем $name
равно Guest
Однако, предостережение: троичный оператор может привести к проблемам с читабельностью, если вы злоупотребите им, поэтому будьте осторожны, когда вы его используете, и не жертвуйте дополнительными строками стандартного условного оператора, если троичный оператор не будет понятен в что он делает
Попробуй это:
echo ($user->affiliate_id != null )?"test":"";
То, что вы хотите, это троичный оператор
Ваш код должен выглядеть так
echo "test" . (($user->affiliate_id !=null) ? 'stringToOutput ifNotNull' : 'stringToOutput if is null');
Кроме того, PHP 7 представил Нулевой оператор объединения который вы могли бы использовать. Вы можете сделать это так
echo 'test' . ($user->affiliate_id ?? 'ID not found!');
В этом случае, если $ user-> affiliate_id установлен и не равен нулю, он будет напечатан
вместо ‘ID не найден!’ сообщение