2011-07-06 22 views
2

我可以在PHP中以這種方式使用OR參數嗎?如果$ x爲null,則將$ y分配給$ var。在PHP中,你可以使用|| (或)以與JavaScript相同的方式?

$var = $x || $y 

簡單的問題,歡呼!

+5

你知道你可以嘗試自己......只是說。 – SteeveDroz

+0

我曾希望能夠啓發我關於這種場景的最佳實踐,並且已經有了。這個問題也可以作爲其他人的參考。 – wilsonpage

+0

有關參考,請參閱http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php – KingCrunch

回答

8

號PHP的布爾運算符評估到truefalse,而不是在Javascript中的操作數的值。所以,你得寫這樣的事:

$var = $x ? $x : $y; 

自5.3,你可以儘管寫這篇文章,基本上具有與JavaScript的||同樣的效果:

$var = $x ?: $y; 

這需要$x雖然存在,否則你應該首先檢查isset

3

沒有,這樣你分配一個布爾值$var

$var = $x or $y; 

表示:$vartrue,如果$x$y。您正在尋找三元操作

$var = isset($x) ? $x : $y; 
// or 
$var = empty($x) ? $y : $x; 

三元運算符始終就像

$var = $expressionToTest 
    ? $valueIfExpressionTrue 
    : $valueIfExpressionFalse 

隨着PHP5.3或更高版本,你可以省略$valueIfExpressionTrue

$var = $expressionToTest ?: $valueIfExpressionFalse; 
1
$x=0; 
$y=9; 
$var = ($x)?$x:$y; 

echo $var; 

如果變量x爲null,那麼var將是9,否則它將是x的值。

0

這個問題已經回答了,但我尤斯特想如果沒有定義這種情況下,如果SOMETHING指向你注意ORAND運營商的其他使用在PHP

defined('SOMETHING') OR define('SOMETHING', 1); 

defined('SOMETHONG')評估爲falseOR後表達將被評估

$admin AND show_admin_controls(); 

$admin如果被評估爲布爾trueshow_admin_controls()函數將被調用

我通常用它來檢查,如果一些常量的定義,但我已經看到了很多使用這種結構用於其它目的的好看又真的很好可讀的代碼示例。

相關問題