2012-10-16 51 views
0

以下代碼中的if語句還有什麼其他替代方法?if語句的替代方案

$page_title = $titles['default']; 
$page_desc = $descriptions['default']; 

if(array_key_exists($module, $titles) && !empty($titles[$module])) 
{ 
    $page_title = $titles[$module]; 
} 
if(array_key_exists($module, $descriptions) && !empty($descriptions[$module])) 
{ 
    $page_desc = $descriptions[$module]; 
} 

上面的代碼工作的很好,我只是想看看是否有任何改進的餘地。

+0

究竟是什麼問題呢?如果您需要建議,請將第一個大括號放在同一行上:P – Lix

+0

「改進」是什麼意思? –

回答

2

這是怎麼回事? ;)

($page_title = @$titles[$module]) or $page_title = $titles['default']; 
($page_desc = @$descriptions[$module]) or $page_desc = $descriptions['default']; 

or this?

$page_title = @$titles[$module] ?: $titles['default']; 
$page_desc = @$descriptions[$module] ?: $descriptions['default']; 
+0

+1我不知道你可以跳過輔助參數。不錯。 – Pebbl

+0

@pebbl:自PHP 5.3 –

+0

以來已添加歡呼聲,感謝您的信息! :)總是有些煩惱,你以前不能這樣做......特別是當第一次檢查是到一個屬性的複雜路徑時,或者在第二部分中必須重複的事情。 – Pebbl

4
$page_title = isset($titles[$module]) ? $titles[$module] : $titles['default']; 
$page_desc = isset($descriptions[$module]) ? $descriptions[$module] : $descriptions['default']; 
+0

是的,我看到...速記 – Alex

+3

'isset'不檢查值是否爲空 – teemitzitrone

+0

@maggie是對的,只記得 – Alex

1

這是一個稍微不同的方式:) - 我不作任何聲明說,這是更好的... ...它取決於形勢。

$titles += array("$module" => $titles['default']); 
$descriptions += array("$module" => $descriptions['default']); 

$page_title = $titles[$module]; 
$page_desc = $descriptions[$module];