php array merge:PHP数组合并方法和array_merge的区别
两个数组没有指定索引的情况$a = [1,2,3,];$b = [1,2,3,'4','5','6'];var_dump($a+$b);//前面的数组中相同键值的元素会覆盖后面数组中的元素arr
顺晟科技
2022-09-15 17:15:03
120
自己在写PHP程序的时候,遇到了一个问题,举个例子来说明一下:
有一个数组$arr1 = array("a#18#高中","b#22#本科","c#25#硕士")
另一个数组$arr2 = array("b#eric#男","a#huang#男","c#liu#女")
注:每个数组中的a,b,c位置可能不同,不能采用下标位置拼接
需求:按$arr1中 a,b,c 的顺序 将arr2的字符 穿插拼接到$arr1中去。得到一个新的数组:
$arr3 = array("**a**#18#高中#huang#男","**b**#22#本科#eric#男","**c**#25#硕士#liu#女");。
请问怎么解决?
每个数组中的a,b,c位置可能不同,不能采用下标位置拼接 -- 这句话不是很认同。
这个地方的拼接肯定是按照某种规则来的,确定了每个里面的abc的值,如果一点规律没有,人为也评不出来呀(怎么知道那两个是一组的呢)。总结了规律剩下的就是找出用于合并的key了,根据情况看是字符串截取还是正则。
在线使用
<?php
function mapExtraKey($r, $c)
{
// 里面表示取第一个#号前面的内容
$r[strstr($c, '#', true)] = $c;
return $r;
}
$arr1 = array("a#18#高中", "b#22#本科", "c#25#硕士");
$arr2 = array("b#eric#男", "a#huang#男", "c#liu#女");
// 提取出第一部分#的作为键
$arr1 = array_reduce($arr1, 'mapExtraKey', []);
// 做同样操作
$arr2 = array_reduce($arr2, 'mapExtraKey', []);
// var_dump($arr1);
//
19
2022-10
25
2022-09
15
2022-09
15
2022-09
15
2022-09
15
2022-09