Я знаю, что вы можете назначить переменную в таком состоянии:
if ($var = $foo)
Однако мне не нужно ничего делать в самом состоянии, поэтому меня часто оставляют пустыми скобками. Могу ли я просто назначить $var
если $foo
является true
каким-либо другим способом, без необходимости делать что-то еще позже?
Также я могу назначить $var
для $foo
если $foo
является true
но если $foo
является false
делайте что-то еще? Подобно:
if ($var = !$foo) { if ($var = !$bar) { //Etc... } }
В принципе, я хочу иметь больше резервных / дефолтов.
Предложение @ chandresh_cool правильное, но для того, чтобы разрешить множественные возможности / резервные копии, вам нужно было бы вложить тройные выражения:
$var = ($foo == true) ? $foo: ($bar == true) ? $bar: ($fuzz == true) ? $fuzz: $default;
Примечание: первые 3 строки заканчиваются двоеточиями, а не полуколонами.
Однако более простым решением является сделать следующее:
$var = ($foo||$bar||$fuzz...);
Хотя это очень старый пост. Логическую ошибку для фальсифицирующих значений можно закодировать следующим образом.
$var = $foo ?: $bar ?: "default";
В этом случае, когда $foo
является фальсифицированным значением (например, ложным, пустым строком и т. Д.), Он возвращается к $bar
иначе он использует $foo
. Если bar является фальсифицированным значением, он будет возвращаться к строке по default
.
Имейте в виду, что это работает с фальсифицированными значениями, а не только true
.
пример:
$foo = ""; $bar = null; $var = $foo ?: $bar ?: "default";
$var
будет содержать текст по default
потому что пустые строки и null
считаются значениями «false».
Вместо этого вы можете использовать трёхмерный оператор следующим образом:
$var = ($foo == true)?$foo:"put here what you want";
Вы можете присвоить такие значения:
$var = $foo;
Установка их в оператор if также возможна, PHP будет оценивать полученный $ var, который вы только что назначили.
Я действительно не задаю вопрос, но вы можете сделать что-то вроде этого:
if(!($var = $foo)){ //something else. }