PHP加入2个数组

时间:2013-05-22 02:09:29

标签: php arrays

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

你能帮帮我吗?

5 个答案:

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

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

答案 2 :(得分:1)

您可以使用array_walk()

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

Demo

根据数组键修改$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()是最简单的方法。

相关问题