2014-01-15 60 views
-6

在JavaScript中,我們可以這樣做:你如何做同樣在PHPPHP使用「||」替代值進行變量定義/聲明「OR」

var x = y || z; 

我想是這樣的:

$x = $y || $z 

這可能嗎?

Thanx!

+4

試試看。 –

+0

我們必須假設你知道*完全* JS代碼的功能,但這不是必須的。所以......首先:你想做什麼? –

+1

'?:' - 沒有,這就是答案。我相信這個問題也被問過很多次了。 – deceze

回答

3

如果你想$x是指示$y || $z的感實性的布爾(即如果任何$y$z是truthy那麼你發佈:$x = $y || $z將工作

如果你想$ x到具有相同的值作爲第一個非假的變量,你可以做一個三元:

$x = $y ? $y : $z; 
+0

當然,但我如何獲得typeof並確保沒有錯誤發生,如果它是未定義的?即:在Javascript中:var x = typeof(y)!==「undefined」? y:z;你如何在PHP中做到這一點? –

+0

@UniversalGrasp'empty'或'isset'都可以用來檢查變量是否未被定義。請參閱[empty](http://uk3.php.net/empty)和[isset](http://uk3.php.net/isset)。 – Jim

+0

你是男人!... Thax a Trillion! –

0

我認爲你的意思是檢查第一個變量是否被定義。
至少這是JS中常見的用例,你會寫x = y || z,這意味着無非是if y is defined then x = y otherwise x = z
這僅適用於JS將undefined作爲false

在PHP中您可以使用isset如果事情是設置/定義測試:

$z = "test"; 
$x = isset($y) ? $y : $z; 

echo $x; //echoes "test" 
2

你可以做到這一點,但它不會有相同的結果在Javascript。

在Javascript中,y || z返回值y如果是真的,則返回z。這在變量初始化中很有用,因爲它允許您分配y,但如果未設置y,則會回退到z

在PHP ||是一個布爾運算符,它總是返回truefalse。所以$y || $z不會返回變量的值,它只是返回它們中的任何一個是否真實。

要獲得相同的結果,你可以使用:

$x = $y ? $y : $z; 

由於PHP 5.3,這可以簡寫爲:

$x = $y ?: $z;