PHP中关联数组上的数组合并
如何在关联数组上进行数组合并,如下所示: 阵列1: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=>$
$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);