Я хочу инициализировать переменную содержимым другой переменной или предопределенным значением, если указанная другая переменная не установлена.
Я знаю, что мог бы использовать
if(isset($var1)){
$var2 = $var1;
} else{
$var2 = "predefined value";
}
Я думал, что делать это будет так элегантно:
$var2 = $var1 || "predefined value";
В прошлый раз, когда я проверял, это работало (или моя память обманывает меня). Но здесь, когда я печатаю $ var2, это всегда 1
, Кажется, PHP проверяет, если заявление $var1 || "predefined value"
верно и назначает 1
в $var2
,
Я хочу, чтобы «предопределенное значение» было присвоено переменной $ var2, если переменная $ var1 не существует.
Какая-то особенность PHP, которую я здесь пропускаю, чтобы заставить это работать?
заранее спасибо
Я обычно создаю вспомогательную функцию следующим образом:
function issetor(&$var, $def = false) {
return isset($var) ? $var : $def;
}
и вызвать его со ссылкой на переменную:
$var2 = issetor($var1, "predefined");
Я только что прочитал это в PHP 7, будет новое сокращение для
$c = ($a === NULL) ? $b : $a;
Это будет выглядеть так:
$c = $a ?? $b;
И может быть расширено так:
$c = $a ?? $b ?? $c ?? $d;
объяснение: $ c будет присвоено первое значение слева, которое не равно NULL.