PHP连接2数组

PHP连接2数组,php,arrays,Php,Arrays,我有两个数组 $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-

我有两个数组

$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()无一给出正确的结果


您能帮我一下吗。

这里有一个关于这个问题的单行解决方案:

foreach($array2 AS $key => $value)
{
    $array1[$key] = isset($array1[$key]) ? $array1[$key] . " " . $value : $value;
}
$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);

在线演示:

以下是该问题的单线解决方案:

$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);
在线演示:

您可以使用:

这将根据数组键修改
$result
(从
$array1
复制)并使用从
$array2
查看的值。您可以使用:


这将根据数组键修改
$result
(从
$array1
复制)并使用从
$array2
查看的值。最好为其编写函数,并将其保存在工具箱中:

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
// )
请注意,如果需要,此函数可以接受两个以上的数组

  • [!]
    在线查看

最好为其编写一个函数,并将其保存在工具箱中:

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
// )
请注意,如果需要,此函数可以接受两个以上的数组

  • [!]
    在线查看


array\u walk()将是最简单的方法。

array\u walk()将是最简单的方法。

您需要编写自己的代码来完成此操作。没有内置函数。你是说使用foreach循环吗?人们期望PHP在每一个场景中都有一个内置函数,这让我很惊讶,一个新手程序员应该能够毫不费力地解决这个问题。
function array\u join($arr1,$arr2){return array(['2013-05-01']=>'test 1',['2013-05-02']=>'test 2',['2013-05-03']=>“工作代码”);}
-只是搞乱了;)您给定的代码甚至无法正确编译。您需要编写自己的代码来完成此操作。没有内置函数。你是说使用foreach循环吗?人们期望PHP在每一个场景中都有一个内置函数,这让我很惊讶,一个新手程序员应该能够毫不费力地解决这个问题。
function array\u join($arr1,$arr2){return array(['2013-05-01']=>'test 1',['2013-05-02']=>'test 2',['2013-05-03']=>“工作代码”);}
-只是搞乱了;)您给定的代码甚至不能正确编译。错误处理是为了什么?$array1不包含$array2键的情况已经得到处理。我建议使用
isset()
而不是
empty()
。这是一个很好的建议。如果$array1将包含一个“0”作为值,它将以这种方式被删除。@zerkms有很多
empty()
调用吗
:)
空($array1[$key])
建议将
设置为isset($array1[$key])
。这可能会产生修改
$array1
的意外副作用。错误处理是为了什么?$array1不包含$array2键的情况已经得到处理。我建议使用
isset()
而不是
empty()
。这是一个很好的建议。如果$array1将包含一个“0”作为值,它将以这种方式被删除。@zerkms有很多
empty()
调用吗
:)
空($array1[$key])
建议设置为
isset($array1[$key])
。这可能会产生修改
$array1
的意外副作用。该死的,我花了5分钟在蹩脚的iPad软键上,只是为了让一个真正键盘上的懒汉揍我一顿。@Niels Keurentjes:“只要有一个真正的键盘懒汉就把我揍一顿”——“懒汉"? 这是个玩笑吗?@NielsKeurentjes对于在iPad上键入答案的人来说,谁是懒汉是有争议的=p@Jack你试过吗?所有的卷发和所有的东西都隐藏在每个键盘后面,就像5个按键一样,你必须处理苹果的资本化想法:PDammit我花了5分钟在蹩脚的iPad软键上打字,只是为了让一个真正键盘的懒汉打败我。@Niels Keurentjes:“就为了让一个真正的键盘懒汉打败我”——“懒汉”?这是个玩笑吗?@NielsKeurentjes对于在iPad上键入答案的人来说,谁是懒汉是有争议的=p@Jack你试过吗?所有的卷发和所有的东西都隐藏在后面,每个都有5个按键,你必须处理苹果的资本化理念:P