2014-02-05 58 views
1

我想明白這一點:「?」是什麼意思「?:」操作符PHP

$page = isset($requestvars['page']) ? $requestvars['page'] : 1; 

$product = isset($requestvars['product']) ? $requestvars['product'] : '' 

但我不理解什麼這會像一個簡單的如果?

謝謝

+0

'?'的意思是如果。 ':'表示其他 –

+0

http://www.php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary –

+1

這是真的嗎??是的! ':'否:-( – DanFromGermany

回答

8

它被稱爲ternary operator,基本上取代if else塊。

例如:

$page = isset($requestvars['page']) ? $requestvars['page'] : 1; 

可以重寫爲:

if(isset($requestvars['page'])) 
{ 
    $page = $requestvars['page']; 
} 
else 
{ 
    $page = 1; 
} 

三元運算符告訴PHP如果該值被設置爲分配給$requestvars['page']$page,否則到指定1

+0

哇,你輸入的速度非常快,我只是過了一半...現在我剛剛意識到你在他的帖子上做了一個修改。 – Albzi

0

這是一個三元的表達。

它作爲if/else顯示得更清楚,但有些人真的喜歡它們。

+0

大多數人都喜歡它們,因爲它們佔用空間小,並且內聯能力強。 – BenM

+0

是的,但是它們可以很容易地理解代碼在密集使用時非常密集,風格就是這樣,我傾向於微笑並點頭對他們 – useSticks

0

這被稱爲三元操作。它基本上是內聯的。

$product = isset($variable) ? do something if true : do something if false; 

它們只是寫入內聯if的簡寫形式。測試時保持乾淨的代碼非常有用。

1

這是一個ternary operator。它像if語句一樣工作,但它更短。

echo ($a === true) ? 'yep' : 'nope'; 

由於PHP 5.3,還有一個最短的版本,?:運營商,只測試表達式並返回在成功的情況下表達自己,否則其他選項。

$foo = getSomethingFromTheDb(); 
$default = new stdObject; 

$object = $foo ?: $default;