2014-11-05 64 views
2

有沒有一種很好的方式來合併PHP中的兩個數組。PHP合併數組如果爲空

我的$defaults -array包含默認值。如果$properties -array包含一個空字符串,我想使用來自$defaults數組的值。

到目前爲止我的代碼看起來如下:

$defaults = array( 
     'src' => site_url() . '/facebook_share.png', 
     'alt' => 'Facebook', 
     'title' => 'Share', 
     'misc' => '', 
     ); 


    $properties = array( 
     'src' => '', 
     'alt' => '', 
     'title' => 'Facebook Share', 
     'text' => 'FB Text', //further properties 
     ); 

$arr = array_merge($defaults, $properties); 
var_dump($arr); 

當前的結果:

$arr = array( 
     'src' => '', 
     'alt' => '', 
     'title' => 'Facebook Share', 
     'text' => 'FB Text', 
     'misc' => '', 
     ); 

期望的結果:

$arr = array( 
     'src' => site_url() . '/facebook_share.png', 
     'alt' => 'Facebook', 
     'title' => 'Facebook Share', 
     'text' => 'FB Text', 
     'misc' => '', 
     ); 

希望有人可以提供幫助。

回答

3

嘗試:

$arr = array_merge($defaults, array_filter($properties)); 

記住array_filter會過濾掉所有空字符串''0nullfalse元素。

1

嘗試使用此功能

/** 
    * @param {array} the properties array. transmitted by referance 
    * @param {array} the default array 
    */ 
function getTheBest(&$properties, $defaults) { 
    $temp = $properties; 
    foreach ($properties as $key => $value) { 
     if(empty($properties[$key]) && array_key_exists($key, $defaults) && !empty($defaults[$key])) { 
      $properties[$key] = $defaults[$key]; 
     } 
    } 
} 
0

這工作得很好:

 $arr = array_merge($defaults, array_filter($properties));