【发布时间】:2017-05-09 11:36:06
【问题描述】:
我需要合并 3 个具有相同键的数组。结果必须是一个数组包含三个数组的交替值。
例子
$array1 = array(
array("social"=>"facebook", "id"=>"fewf", "name"=>"bbb"),
array("social"=>"facebook", "id"=>"fr43", "name"=>"ccc"),
array("social"=>"facebook", "id"=>"fewf", "name"=>"ddd")
);
$array2 = array(
array("social"=>"twitter", "id"=>"are5", "name"=>"ddd"),
array("social"=>"twitter", "id"=>"q23q", "name"=>"eee"),
array("social"=>"twitter", "id"=>"g55h", "name"=>"off"),
array("social"=>"twitter", "id"=>"r3r3", "name"=>"bgf"),
array("social"=>"twitter", "id"=>"f333", "name"=>"1qa")
);
$array3 = array(
array("social"=>"instagram", "id"=>"bv33", "name"=>"ggg"),
array("social"=>"instagram", "id"=>"nh44", "name"=>"hhh"),
array("social"=>"instagram", "id"=>"tt12", "name"=>"iii")
);
-------------------------------------- RESULT ARRAY 必须是备用的。
$array_merged = array(
array("social"=>"facebook", "id"=>"fewf", "name"=>"bbb"),
array("social"=>"twitter", "id"=>"are5", "name"=>"ddd"),
array("social"=>"instagram", "id"=>"bv33", "name"=>"ggg"),
array("social"=>"facebook", "id"=>"fr43", "name"=>"ccc"),
array("social"=>"twitter", "id"=>"q23q", "name"=>"eee"),
array("social"=>"instagram", "id"=>"nh44", "name"=>"hhh"),
array("social"=>"facebook", "id"=>"fewf", "name"=>"ddd"),
array("social"=>"twitter", "id"=>"g55h", "name"=>"off"),
array("social"=>"instagram", "id"=>"tt12", "name"=>"iii"),
array("social"=>"twitter", "id"=>"r3r3", "name"=>"bgf"),
array("social"=>"twitter", "id"=>"f333", "name"=>"1qa")
);
如何做到这一点?让最终数组以另一种方式添加每个数组?
------------------ 更新
我已尝试执行以下操作:
$new = array();
for ($i=0; $i < $array2; $i++) {
$new[] = $array1[$i];
$new[] = $array2[$i];
$new[] = $array3[$i];
}
但是,当另一个索引完成时,结果给了我空数组。
【问题讨论】:
-
$array2已在您的代码中被覆盖,为什么? -
对不起我的错误..修复它。
-
我猜,这不仅仅是合并数组,而是以偶数顺序排列合并的序列
facebook - twitter - instagram,对吧? -
是的@RomanPerekhrest 是对的!如果一个数组比另一个数组短,则结果不必合并空数组
-
好的,我有一个针对您当前特定输入的解决方案,但是如果数组之间的大小存在很大差异怎么办?例如:$array1 有 3 个项目,$array2 有 7 个项目,$array3 有 12 个项目,这种情况应该是什么结果?
标签: php arrays merge array-merge