合并两个关联数组而不重新索引 - PHP

3

如何在不重新索引的情况下合并2个关联数组?我希望不使用foreach或for循环,还有更好的方法吗?

$a1=array(555=>array('name'=>'First Name','surname'=>'Second Name'), 888=>array('name'=>'New First Name','surname'=>'New Second Name'));
$a2=array(888=>array('invite'=>false), 555=>array('invite'=>true)); 
$result=array(555=>array('name'=>'First Name','surname'=>'Second Name', 'invite'=>true), 888=>array('name'=>'New First Name','surname'=>'New Second Name', 'invite'=>false));

结果数组中元素888在哪里?这是一个打字错误吗? - Md. Khairul Hasan
@Anant,我已经编辑了我的问题中的索引...我想要合并这两个数组。 - Steffi
3个回答

6
使用array_replace_recursive将邀请项添加到相应的源数组元素中。
array_replace_recursive($a1, $a2);

demo


0

使用 array_merge 函数或者 $a1 + $a2


区别在于重复的键:使用第一个或替换为最后一个相同的键。 - doubleui
如果您希望按键排序,请将ksort(&$arr)添加到结果数组中。 - doubleui
array_merge返回'Array([0] => Array([name] => 名字[surname] => 姓氏)[1] => Array([name] => 新名字[surname] => 新姓氏)[2] => Array([invite] => )[3] => Array([invite] => 1))',而$a1 + $a2返回Array([555] => Array([name] => 名字[surname] => 姓氏)[888] => Array([name] => 新名字[surname] => 新姓氏))。 - Steffi
@Steffi 对不起,是我的错。 - doubleui

0

你应该使用array_replace_recursive函数

$a1=array(555=>array('name'=>'First Name','surname'=>'Second Name'), 888=>array('name'=>'New First Name','surname'=>'New Second Name'));
$a2=array(888=>array('invite'=>false), 555=>array('invite'=>true));
print_r(array_replace_recursive($a1, $a2));

这将会打印:

Array ( [555] => Array ( [name] => First Name [surname] => Second Name [invite] => 1 ) [888] => Array ( [name] => New First Name [surname] => New Second Name [invite] => ) )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接