【问题标题】:Merge two associative arrays without reindexing - PHP合并两个关联数组而不重新索引 - PHP
【发布时间】:2016-10-24 02:36:25
【问题描述】:

如果不重新索引,如何合并 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在哪里?这是笔误吗?
  • @Anant 我已经在我的问题中编辑了索引。我想合并这两个数组

标签: php indexing merge associative-array array-merge


【解决方案1】:

使用array_merge 函数或$a1 + $a2

【讨论】:

  • 区别在于重复键:使用第一个或替换到最后一个相同的键。
  • 如果您希望按键排序,请将 ksort(&$arr) 添加到结果数组中。
  • array_merge 返回 'Array ( [0] => Array ( [name] => First Name [surname] => Second Name ) [1] => Array ( [ name] => 新名字 [surname] => 新第二名字 ) [2] => 数组 ( [invite] => ) [3] => 数组 ( [invite] => 1 ) )' 和 $ a1 + $a2 数组 ( [555] => 数组 ( [name] => First Name [surname] => Second Name ) [888] => Array ( [name] => New First Name [surname] => 新的第二个名字 ) )
  • @Steffi 对不起,我的错。
【解决方案2】:

使用array_replace_recursive将邀请项添加到对应的源数组元素中

array_replace_recursive($a1, $a2);

demo

【讨论】:

  • 快速准确。 +10
【解决方案3】:

你应该使用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] => ) )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 2012-10-21
    • 2012-01-23
    • 2016-04-16
    • 1970-01-01
    • 2012-02-25
    相关资源
    最近更新 更多