2010-12-07 43 views
0

可能重複:
What is the PHP ? : operator called and what does it do?PHP語法與?和:

我找到了答案,這是我一直在尋找,但我不太明白的語法,因爲他們使用,我認爲,短標籤。這裏是代碼:

$temp = is_array($value) ? $value : trim($value); 

有人可以解釋這是如何工作的?我認爲這意味着如果真的,返回值,如果虛假返回值修剪,但我不知道。能有兩種以上的選擇,還是嚴格對錯?

+0

此外:[參考 - 這個符號在PHP中有什麼意思?:&=&! @ :: => - > >> ++。=](http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – mario 2010-12-07 02:23:54

回答

3

你是對的。這是一個條件運算符,?:是一個三元運算符。

<?php 

// Example usage for: Ternary Operator 
$temp = is_array($value) ? $value : trim($value); 

// The above is identical to this if/else statement 
if (is_array($value)) { 
    $temp = $value; 
} else { 
    $temp = trim($value); 
} 

?> 

看看一半時該頁面瞭解更多信息:

http://php.net/manual/en/language.operators.comparison.php

+0

它被稱爲* the *三元運算符,只要`.`被稱爲*二元運算符:P – alex 2010-12-07 02:18:19

0

它基本上是與

01相同
if(is_array($value)) { 
    $temp = $value; 
} else { 
    $temp = trim($value); 
} 
1

$condition ? true : false,該?指令一樣

if($condition) 
    true 
else 
    false 

所以在你的例子作爲

if(is_array($value)) 
    $temp = $value 
else 
    $temp = trim($value); 
0

你是正確的代碼是一樣的。如果is_array($value)返回true,則表達式設置​​,否則爲$temp = trim($value)

0

嚴格的兩種選擇。你解釋正確。

if (is_array($value)) $temp = $value; 
else $temp = trim($value); 

如果你想破解這個語法有3個值,你可以做$temp = (condition1) ? true : (condition2) ? true2 : false;

+0

事實上,雖然可能值得添加圓括號以進行更清晰的分組:$ temp = $ condition1? 'val1':($ condition2?'val2':'val3');`有些人認爲以這種方式鏈接三元運算符本質上難以閱讀。因人而異。 ;-) – 2010-12-07 03:23:26

0

這是三元運算符。它會在之前轉換exp嗎?到一個布爾。如果你想要更多的選擇,只需結合多?:。

(con?trueorfalseiftrue:otherwise)? (con2?_:_):(con3?_:_)