合并两个共享键的关联数组并连接字符串值

Merge two associative arrays sharing keys and concatenate string values

我有两个数组:

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

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

我希望结果数组为:

$arr = 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
)

勾选这个Eval

试试这个:

$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);