2014-11-05 2 views
2

PHP에서 두 개의 배열을 병합하는 좋은 방법이 있습니까?비어있는 경우 PHP 병합

$defaults - 배열에는 기본값이 들어 있습니다. $properties - 배열에 빈 문자열이 포함되어있는 경우 $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 문자열 '', 0, null, false 비어있는 요소를 걸러 있음을 유의하십시오.

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));