PHP объединить массив, если он пуст

Есть ли хороший способ объединить два массива в PHP.

мой $defaults-array содержит значения по умолчанию. Если $properties-array содержит пустую строку, я хочу использовать значение из $defaults-array.

Мой код пока выглядит следующим образом:

    $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' => '',
);

Надеюсь, кто-то может помочь.

2

Решение

Пытаться:

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

Имейте в виду, что array_filter отфильтрует элементы, которые являются пустой строкой '', 0, null, false,

3

Другие решения

Попробуй с этой функцией

/**
* @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];
}
}
}
2

Это отлично работает:

 $ arr = array_merge ($ defaults, array_filter ($ properties));
0
По вопросам рекламы [email protected]