PHP中关联数组上的数组合并

PHP中关联数组上的数组合并,php,array-merge,Php,Array Merge,如何在关联数组上进行数组合并,如下所示: 阵列1: $options = array ( "1567" => "test", "1853" => "test1", ); 阵列2: $option = array ( "none" => "N/A" ); 因此,我需要将这两者合并,但当我这样做时(在调试中): 当array\u merge不起作用时,只需这样做即可 <?php $new = array(); foreach ($options as $key=>$

如何在关联数组上进行数组合并,如下所示:

阵列1:

$options = array (
"1567" => "test",
"1853" => "test1",
);
阵列2:

$option = array (
"none" => "N/A"
);
因此,我需要将这两者合并,但当我这样做时(在调试中):


array\u merge
不起作用时,只需这样做即可

<?php
$new = array();
foreach ($options as $key=>$value) $new[$key] = $value;
foreach ($option as $key=>$value) $new[$key] = $value;
?>

或者根据哪个数组具有更高的优先级,切换两个
foreach
循环

我希望将两个关联数组合并在一起,如果键相同,则将值相加。如果任一数组都有唯一的键,则这些键将与其现有值一起添加到合并数组中

我找不到执行此操作的函数,因此生成以下命令:

函数数组\合并\关联($array1,$array2)
{
如果(sizeof($array1)>sizeof($array2))
{
echo$size=sizeof($array1);
}
其他的
{
$a=$array1;
$array1=$array2;
$array2=$a;
echo$size=sizeof($array1);
}
$keys2=数组\ U键($array2);
对于($i=0;$i请尝试使用:

$finalArray=$options+$option。请参阅 只是检查重复键的行为,我没有测试这个。对于唯一键,它工作得很好

<?php

$options = array (
                  "1567" => "test",
                  "1853" => "test1",
                  );


$option = array (
"none" => "N/A"
);


$final = array_merge($option,$options);

var_dump($final);


$finalNew = $option + $options ;

var_dump($finalNew);

?>

只需使用
$options+$option

var_dump($options + $option);
产出:

array(3) {
  [1567]=>
  string(4) "test"
  [1853]=>
  string(5) "test1"
  ["none"]=>
  string(3) "N/A"
}
但发生钥匙碰撞时要小心。以下是


第一个数组中的键将被保留。如果两个数组中都存在一个数组键,则将使用第一个数组中的元素,并忽略第二个数组中匹配键的元素。此代码可用于递归合并:

$final_option = $option + $options;
function merge($arr1, $arr2){
        $out = array();
        foreach($arr1 as $key => $val1){
            if(isset($arr2[$key])){
                if(is_array($arr1[$key]) && is_array($arr2[$key])){
                    $out[$key]=  merge($arr1[$key], $arr2[$key]);
                }else{
                    $out[$key]= array($arr1[$key], $arr2[$key]);
                }
                unset($arr2[$key]);
            }else{
                $out[$key] = $arr1[$key];
            }
        }
        return $out + $arr2;
 }

如果数组具有相同的键,则使用
array\u merge\u recursive()


array\u merge\u recursive()
不会覆盖,它只是将值作为一个数组。

“”。如果您可以将
$options
数组键更改为包含一些字符串,那么。@Shef:您应该提到:非数字字符串。还要记住,合并后键将是“0”和“1”。array\u merge()函数会重置数字键!
$final_option = $option + $options;
function merge($arr1, $arr2){
        $out = array();
        foreach($arr1 as $key => $val1){
            if(isset($arr2[$key])){
                if(is_array($arr1[$key]) && is_array($arr2[$key])){
                    $out[$key]=  merge($arr1[$key], $arr2[$key]);
                }else{
                    $out[$key]= array($arr1[$key], $arr2[$key]);
                }
                unset($arr2[$key]);
            }else{
                $out[$key] = $arr1[$key];
            }
        }
        return $out + $arr2;
 }
$array1 = array( "a" => "1" , "b" => "45" );

$array2 = array( "a" => "23" , "b" => "33" );

$newarray = array_merge_recursive($array1,$array2);