2012-12-29 59 views
4

可能重複:
Any more concise way to set default values?PHP回報,如果isset

是否有一個內置的像PHP函數如下:

function isset_get($array, $key, $default = null) { 
    return isset($array[$key]) ? $array[$key] : $default; 
} 

我不喜歡

$my_var = isset($my_array['some Key']) ? $my_array['some Key'] : ''; 

,寧願

$my_var = isset_get($my_array, 'some Key', ''); 

或類似的東西...

+0

我不知道任何 –

+10

的@SunnyRed你剛發一個, 用它。 – afarazit

+0

:)你在後面的風格中看到了優勢嗎? – SunnyRed

回答

4

不。在我的代碼庫中,我們有幾個這種性質的助手。名字是非常可怕的,但因爲他們經常使用,簡潔是有保證的

idx($array, $key, $default) 返回$默認如果!isset($陣列[$關鍵])

​​3210 像IDX,但強制執行$陣列實際上是一個數組,如果不是,則拋出。

edx($array, $key, $default) 返回$默認如果!isset($陣列[$關鍵])或空($陣列[$關鍵])

2

考慮使用array_merge。合併將覆蓋每個給定數組的鍵,從而允許您使用給定值覆蓋默認值的數組。

$defaults = array('some Key' => 'some Default Value'); 
$input = array('some Key' => 'a new value'); 
$merged = array_merge($defaults, $input); 
$value = $merged['some Key']; 

這不會對數字鍵正常工作不過,所以你應該確保你與一個地圖,而不是一個向量工作。