我不知道這是什麼通常被稱爲,但我希望標題溝通不夠好。我擁有的是一些變量,其中一些可能爲空。
我想做的事:
$a = $b || $c || $d;
其中$一個最終被=的第一個非空的變量。
我不知道這是什麼通常被稱爲,但我希望標題溝通不夠好。我擁有的是一些變量,其中一些可能爲空。
我想做的事:
$a = $b || $c || $d;
其中$一個最終被=的第一個非空的變量。
據我所知,PHP不支持JavaScript的相同方式。
你可以,但是做這樣的事情:
$a = $b ? $b : ($c ? $c : $d);
一個更通用的解決方案:
function fallthrough($arr) {
//$arr should be an array of possible values. The first non-null value is returned
do $a = array_shift($arr);
while($a === null && $arr);
return $a;
}
<?php
$a = 0;
$b = false;
$c = true; //should become this
$d = '1';
$e = $a ?: $b ?: $c ?: $d;
var_dump($e);
//bool(true)
//should be '1' if order is different
$e = $a ?: $b ?: $d ?: $c;
var_dump($e);
//string(1) "1"
...但是?:
還挺新的,你會混淆你的同事/編碼人員。
哦,如上所述:在所有的謬誤值上失敗,而不僅僅是NULL。 – Wrikken
我不認爲這是可能的。我認爲你不得不使用其他更加費力的方式。即使變量數組,遍歷它,直到你找到一個非空值,並打破循環,就像這樣:
$vars = array("b" => $b, "c" => $c, "d" => $d);
foreach($vars as $var) {
if($var != null) {
$a = $var;
break;
}
}
嗯,就像這裏的一些其他的答案說,你可以用文字的速記方法這個,但是編寫可讀代碼也很重要。上面的代碼是非常可讀的。
您是否試圖將b或c或d的內容分配給a:\? – theBigChalk
錯誤的語言。它可以在Ruby或JavaScript中工作。在PHP,AFAIK中,您需要使用trinary運算符並編寫'$ b!== null? $ b:($ c!== null?$ c:$ d)' – Amadan
另請參閱:http://stackoverflow.com/questions/1013493/coalesce-function-for-php – Wrikken