有没有一种很好的方法可以在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' => '',
);
希望有人可以提供帮助。
答案 0 :(得分:3)
尝试:
$arr = array_merge($defaults, array_filter($properties));
请注意,array_filter
会过滤掉空字符串''
,0
,null
,false
的元素。
答案 1 :(得分: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 :(得分:0)
这很好用:
$arr = array_merge($defaults, array_filter($properties));