我有2个阵列
$array1 = array(
['2013-05-01']=>'test',
['2013-05-02']=>'testing',
['2013-05-03']=>'working',
['2013-05-04']=>'future test');
$array2 = array(
['2013-05-01']=>'1',
['2013-05-02']=>'done',
['2013-05-03']=>'code',
['2013-05-05']=>'release');
我想加入这些数组,以便输出
$result = array(
['2013-05-01']=>'test 1',
['2013-05-02']=>'testing 2',
['2013-05-03']=>'working code',
['2013-05-04']=>'future test',
['2013-05-05']=>'release')
我试过$ result = $ array1 + array2; array_merge(),array_combine()none给出了正确的结果。
你能帮帮我吗?答案 0 :(得分:6)
foreach($array2 AS $key => $value)
{
$array1[$key] = isset($array1[$key]) ? $array1[$key] . " " . $value : $value;
}
答案 1 :(得分:6)
以下是该问题的单行解决方案:
$array1 = array(
'2013-05-01'=>'test',
'2013-05-02'=>'testing',
'2013-05-03'=>'working',
'2013-05-04'=>'future test');
$array2 = array(
'2013-05-01'=>'1',
'2013-05-02'=>'done',
'2013-05-03'=>'code',
'2013-05-05'=>'release');
$r = array_map(function($i) {
return !is_array($i) ? $i : implode(' ', $i);
}, array_merge_recursive($array1, $array2));
var_dump($r);
答案 2 :(得分:1)
您可以使用array_walk()
:
$result = $array1;
array_walk($result, function(&$value, $key) use (&$array2) {
$value .= ' ' . $array2[$key];
});
根据数组键修改$result
(从$array1
复制)使用从$array2
查找的值进行修改。
答案 3 :(得分:0)
最好为它编写函数并将其保存在工具箱中:
function merge_array() {
$merged = array();
$arrays = func_get_args();
if ($arrays) {
foreach ($arrays as $array) {
foreach ($array as $key => $value) {
if (isset($merged[$key])) {
$merged[$key] .= ' ' . $value;
}
else {
$merged[$key] = $value;
}
}
}
}
return $merged;
}
现在将$array1
和$array2
传递给它:
$result = merge_array($array1, $array2);
你会得到这个结果:
// Array
// (
// [2013-05-01] => test 1
// [2013-05-02] => testing done
// [2013-05-03] => working code
// [2013-05-04] => future test
// [2013-05-05] => release
// )
请注意,如果您需要,此函数可接受两个以上的数组。
[!]
点击ideone在线查看。答案 4 :(得分:0)
array_walk()是最简单的方法。