遇到了个小问题,两个数组合并好快速的写入数据库中,但是怎么合并都不理想,想问下。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);
}
```