18910140161

PHP怎样将两个数组穿插合并?

顺晟科技

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);

//                                  
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航