Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 合并具有相同键的两个关联数组_Php_Merge_Associative Array - Fatal编程技术网

Php 合并具有相同键的两个关联数组

Php 合并具有相同键的两个关联数组,php,merge,associative-array,Php,Merge,Associative Array,我有两个阵列: $arr1 = array("123" => "abc"); $arr2 = array("123" => "xyz", "456" => "lmn"); 我希望结果数组为: $arr=array(“123”=>“abc,xyz”,“456”=>“lmn”) 我知道我可以编写一些代码来获取与键对应的值,然后使用像“;”这样的分隔符进行concat或者“,”,但我想知道有没有什么有效的方法可以做到这一点? 可能是内置的功能 提前谢谢 简单的foreach就可以

我有两个阵列:

$arr1 = array("123" => "abc");

$arr2 = array("123" => "xyz", "456" => "lmn");
我希望结果数组为:

$arr=array(“123”=>“abc,xyz”,“456”=>“lmn”)

我知道我可以编写一些代码来获取与键对应的值,然后使用像“;”这样的分隔符进行concat或者“,”,但我想知道有没有什么有效的方法可以做到这一点? 可能是内置的功能


提前谢谢

简单的foreach就可以了!检查内联注释

$arr1 = ["123" => "abc"];

$arr2 = ["123" => "xyz", "456" => "lmn"];

foreach ($arr2 as $key => $value) {
    if(array_key_exists($key, $arr1)) // Check if key exists in array
        $arr1[$key] .= ",$value";     // If so, append
    else
        $arr1[$key] = $value;         // otherwise, add
}

print_r($arr1);
打印

Array
(
    [123] => abc,xyz
    [456] => lmn
)

检查此项

简单foreach即可!检查内联注释

$arr1 = ["123" => "abc"];

$arr2 = ["123" => "xyz", "456" => "lmn"];

foreach ($arr2 as $key => $value) {
    if(array_key_exists($key, $arr1)) // Check if key exists in array
        $arr1[$key] .= ",$value";     // If so, append
    else
        $arr1[$key] = $value;         // otherwise, add
}

print_r($arr1);
打印

Array
(
    [123] => abc,xyz
    [456] => lmn
)
检查此项

尝试以下操作:

$arr1 = array("123" => "abc");

$arr2 = array("123" => "xyz", "456" => "lmn");

$o = [];
foreach($arr1 as $k => $v)
{
    $o[$k][] = $v;
}
foreach($arr2 as $k => $v)
{
    $o[$k][] = $v;
}
$result = array_map(function($v){implode(',', array_unique($v));}, $o);
试试这个:

$arr1 = array("123" => "abc");

$arr2 = array("123" => "xyz", "456" => "lmn");

$o = [];
foreach($arr1 as $k => $v)
{
    $o[$k][] = $v;
}
foreach($arr2 as $k => $v)
{
    $o[$k][] = $v;
}
$result = array_map(function($v){implode(',', array_unique($v));}, $o);

我可以知道这是不是一个有效的数组吗?是的,它是一个有效的数组array\u merge\u recursive($arr1,$arr2);//尝试此项检查@VishnuBhadoriya:array\u merge\u recursive不能与整数索引一起使用我是否知道这是一个有效的数组?是的,它是一个有效的arrayarray\u merge\u recursive($arr1,$arr2);//尝试此项检查@VishnuBhadoriya:array\u merge\u recursive不能与整数索引hanks一起使用!但是我正在寻找更像array_merge()的东西,这样我就不必编写额外的代码了。谢谢!但是我正在寻找更像array_merge()的东西,这样我就不必编写额外的代码了。