2013-07-05 57 views
-1

我有兩個快速問題,我在Google上找不到。PHP運營商速度

此運算符的正確名稱是什麼?

$a = ($b > 5) ? 'High' : 'Low'; 

其次,有沒有什麼情況比任何其他運營商更受歡迎?我知道'如果其他'是一種更快的方法,並且更易於閱讀和編輯。

謝謝!

+0

我不知道更快,但至少這是客觀的。更容易閱讀和編輯顯然不是。 – Jon

回答

3

它被稱爲Ternary operator

person做了一些基準,答案是,這取決於情況。從此doc

報價:

// snippet 1 
$tmp = isset($context['test']) ? $context['test'] : ''; 

// snippet 2 
if (isset($context['test'])) { 
    $tmp = $context['test']; 
} else { 
    $tmp = ''; 
} 

正確的答案是:這取決於。大多數時候,他們的速度大致相同,你不需要關心。但是如果$ context ['test']包含大量數據,snippet 2比snippet 1快得多。

+0

謝謝!這正是我所期待的。 – Tom

+0

非常歡迎你! – jh314

+0

我不認爲相信您發佈的博客是明智的;我自己的性能基準沒有把計數放在任何地方,他的評論關於PHP的複製方法已經過時了。 [*這是在5.2.5 *上運行的性能](http://codepad.org/EToVfPH7),我在5.3.13上獲得了更加相同的性能。 – Eric

0

它被稱爲三元運算符。

它用於使代碼更簡單,它有時可以幫助您將兩個語句合併爲一個語句。

這裏舉一個例子。相反的:

if($Disabled) $String = 'disabled'; else $String = ''; 
echo '<input type="text" ' . $String . '>'; 

您可以使用:

echo '<input type="text" ' . $Disabled ? 'disabled' : '' . '>'; 

我沒有簡化代碼上面的目的,以清楚地表明我的觀點。這樣你就只有一條語句,避免了額外的if/else。在某些情況下,它可能會幫助你。在其他人中,你將看不到任何好處。

+0

第一個片段只會執行一個任務 –

+0

我已更新示例以更清楚地顯示我的觀點。感謝您指出了這一點。 – Marcovecchio