php中如何有条件的合并两个数组

遇到了个小问题,两个数组合并好快速的写入数据库中,但是怎么合并都不理想,想问下。1和2数组同一个key的组成一起,并且把key修改为array1和raary2,各位帮看下,谢谢了

//数组1
$array1=array
(
    "1-ASD",
    "1-EWFEEF",
    "1-BHRTBHTR",
    "1-RTHJT",
    "1-TNJRTHTR"
)

//数组1
$array2=array
(
    "1-ASD",
    "1-EWFEEF",
    "1-BHRTBHTR",
    "1-RTHJT",
    "1-TNJRTHTR"
)


//想要输出的二维数组形式
//1和2数组同一个key的组成一起,并且把key修改为array1和raary2

//新数组输出
array
(
    [0] => Array
        (
            [array1] => 1-ASD
            [array2] => 2-ASD
        )
    [1] => Array
        (
            [array1] => 1-EWFEEF
            [array2] => 1-EWFEEF
        )
    [2] => Array
        (
            [array1] => 1-BHRTBHTR
            [array2] => 2-BHRTBHTR
        )
    [3] => Array
        (
            [array1] => 2-TNJRTHTR
            [array2] => 2-TNJRTHTR
        )
    [4] => Array
        (
            [array1] => 2-KMYTY
            [array2] => 2-KMYTY
        )
)

该回答引用GPTᴼᴾᴱᴺᴬᴵ
你可以使用循环遍历数组的方式,逐个判断数组元素的 key 是否存在于另一个数组中,如果存在则将两个数组的值合并到新数组中。代码如下:

//数组1
$arry1 = array(
    "1-ASD",
    "1-EWFEEF",
    "1-BHRTBHTR",
    "1-RTHJT",
    "1-TNJRTHTR"
);

//数组2
$array2 = array(
    "2-ASD",
    "2-EWFEEF",
    "2-BHRTBHTR",
    "2-RTHJT",
    "2-TNJRTHTR"
);

// 新数组
$array = array();
foreach($arry1 as $key => $value) {
    $temp = explode('-', $value);
    $array1_key = $temp[0];
    foreach($array2 as $key2 => $value2) {
        $temp2 = explode('-', $value2);
        $array2_key = $temp2[0];
        if($array1_key == $array2_key) {
            $array[] = array('array1' => $value, 'array2' => $value2);
            unset($array2[$key2]);
            break;
        }
    }
}


运行后,得到的新数组 $array 就是你想要的结果。

我用了比较笨的方法,使用array_merge_recursive()函数,不过这个函数现在对关联数组才起作用,所以先把索引数组变成关联数组,然后再用array_merge_recursive把相同关联key的数组合并在一起。


```php
foreach ($array1 as $key =>$value){
    $new_key[]='a-'.$key;//修改key为关联
    $new_value[]=$value;
}

foreach ($array2 as $key2 =>$value2){
    $new_key2[]='a-'.$key2;//修改key为关联
    $new_value2[]=$value2;
}

    $array1_1=array_combine($new_key,$new_value);//重新组合array1
    
    $array2_1=array_combine($new_key2,$new_value2);//重新组合array1
    
    $array=(array_merge_recursive($array1_1,$array2_1);//合并两个数组中相同key的值
    foreach ($array as $key3 =>$value3){
        $key3[0]='array1';//修改新数组中key名字
        $key3[1]='array2';//修改新数组中key名字
        $value4=array('a'=>$value3[0],'b'=>$value3[1],'c'=>$value3[2]);
        //print_r($value4);
    }

```