1

我有 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() 没有给出正确的结果。

你能帮我吗。

4

5 回答 5

6
foreach($array2 AS $key => $value)
{
    $array1[$key] = isset($array1[$key]) ? $array1[$key] . " " . $value : $value;
}
于 2013-05-22T02:15:07.297 回答
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);

在线演示:http: //ideone.com/wmbple

于 2013-05-22T02:16:38.837 回答
1

你可以使用array_walk()

$result = $array1;
array_walk($result, function(&$value, $key) use (&$array2) {
    $value .= ' ' . $array2[$key];
});

演示

这使用基于数组键查找的值就地修改$result(从 复制)。$array1$array2

于 2013-05-22T02:19:40.177 回答
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
// )

请注意,如果您愿意,此函数可以接受两个以上的数组

于 2013-05-22T02:23:21.570 回答
0

array_walk() 将是最简单的方法。

于 2013-05-22T02:33:19.933 回答