2012-08-07 30 views
0

我有我的應用程序所需的值的數組。如果沒有提供這些值,我想用默認值填充它們。例如,如果我的應用程序需要三個值PHP數組填充默認值(如果爲NULL)。陣列相交技巧?

$default_vals = array('foo','bar','baz'); 
$given_vals = array('faz',NULL); 

我需要的結果是:

$combined = array('faz','bar','baz') 

基本上填補了與默認的一人失蹤數組索引。

差不多5點,大腦炸了。我認爲這可以通過array_function()(如array_intersect()或merge()來輕鬆完成。

謝謝。

編輯:順便說一下.. $ given_vals可以包含與$ default相同的值,所以解決方案應該可以工作,即使是這種情況。

回答

4

您需要將NULL第一個篩選出的輸入,那麼你可以做一個所謂的陣列工會(數組聯合運營商+,見Array operatorsDocs):

$result = array_filter($given_vals) + $default_vals; 

請小心,array_filterDocs會還要刪除FALSE之類的值或空字符串。所以我不是100%確定是否適合您的需求。如果不是,使其更加具體:

$result = array_filter($given_vals, function($v) {return !is_null($v);}) 
      + $default_vals; 
ksort($result); 
+0

有時我希望能有一個+2按鈕... – alfasin 2012-08-07 23:04:36

+2

有,這就是所謂的賞金... – ircmaxell 2012-08-07 23:34:04