两个数组如何合并到一起

时间:2022-09-15 23:11:35
例如:
     array(0=> Array ( [id] => 1 [catid] => 6))
     array(0=> Array ( [title] =>标题 [content] => 内容))

有什么办法,使最后能出现这样的结果
   array(0=> Array ( [id] => 1 [catid] => 60 [title] =>标题 [content] => 内容))

8 个解决方案

#1


用array_merge函数

#2


用array_merge函数
http://www.w3school.com.cn/php/func_array_merge.asp

定义和用法
array_merge() 函数把两个或多个数组合并为一个数组。
如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)。如果数组是数字索引的,则键名会以连续方式重新索引。
注释:如果仅仅向 array_merge() 函数输入了一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引。(参见例子 2)

#3


array_merge 后面会覆盖前面的。+的话前面覆盖后面的。不知道大家还有什么办法


array(0=> Array ( [id] => 1 [catid] => 6))
array(0=> Array ( [title] =>标题 [content] => 内容))
array(1=> Array ( [id] => 2 [catid] => 6))
array(1=> Array ( [title] =>标题2 [content] => 内容2))
array(2=> Array ( [id] =>3 [catid] => 6))
array(2=> Array ( [title] =>标题3[content] => 内容3))
这是个动态的,最后要出现
 array(0=> Array ( [id] => 1 [catid] => 60 [title] =>标题 [content] => 内容))
 array(1=> Array ( [id] => 2 [catid] => 60 [title] =>标题2 [content] => 内容2))
 array(2=> Array ( [id] => 3 [catid] => 60 [title] =>标题3 [content] => 内容3))

#4


$a = array( array ( 'id' => 1, 'catid' => 6));
$b = array( array ( 'title' => '标题', 'content' => '内容'));

print_r(array( $a[0]+$b[0]) );
print_r(array( array_merge($a[0], $b[0]) ));
print_r(array_map('array_merge', $a, $b));
都可以得到
Array
(
    [0] => Array
        (
            [id] => 1
            [catid] => 6
            [title] => 标题
            [content] => 内容
        )

)

#5



    $arr=array(0=> Array ( 'id' => 1, 'catid' => 6));
    $brr=array(0=> Array ( 'title' =>'标题' ,'content' => '内容'));
    print_r(array_map('array_merge',$arr,$brr));

#6


对于你 #3 的样例,显然可以将他们按下标组合成两个二维数组
array_map('array_merge', $a, $b)

#7


引用 4 楼 xuzuning 的回复:
$a = array( array ( 'id' => 1, 'catid' => 6));
$b = array( array ( 'title' => '标题', 'content' => '内容'));

print_r(array( $a[0]+$b[0]) );
print_r(array( array_merge($a[0], $b[0]) ));
print_r(array_map('array_merge', $a, $b));
都可以得到
Array
(
    [0] => Array
        (
            [id] => 1
            [catid] => 6
            [title] => 标题
            [content] => 内容
        )

)



正解哦。。。。 两个数组如何合并到一起

#8


引用 3 楼 standford 的回复:
array_merge 后面会覆盖前面的。+的话前面覆盖后面的。不知道大家还有什么办法


array(0=> Array ( [id] => 1 [catid] => 6))
array(0=> Array ( [title] =>标题 [content] => 内容))
array(1=> Array ( [id] => 2 [catid] => 6))
array(1=> Array ( [title] =>标题2 [content] => 内容2))
array(2=> Array ( [id] =>3 [catid] => 6))
array(2=> Array ( [title] =>标题3[content] => 内容3))
这是个动态的,最后要出现
 array(0=> Array ( [id] => 1 [catid] => 60 [title] =>标题 [content] => 内容))
 array(1=> Array ( [id] => 2 [catid] => 60 [title] =>标题2 [content] => 内容2))
 array(2=> Array ( [id] => 3 [catid] => 60 [title] =>标题3 [content] => 内容3))


你键名不同怎么会覆盖?请给出你会覆盖的测试数据和结果。

#1


用array_merge函数

#2


用array_merge函数
http://www.w3school.com.cn/php/func_array_merge.asp

定义和用法
array_merge() 函数把两个或多个数组合并为一个数组。
如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)。如果数组是数字索引的,则键名会以连续方式重新索引。
注释:如果仅仅向 array_merge() 函数输入了一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引。(参见例子 2)

#3


array_merge 后面会覆盖前面的。+的话前面覆盖后面的。不知道大家还有什么办法


array(0=> Array ( [id] => 1 [catid] => 6))
array(0=> Array ( [title] =>标题 [content] => 内容))
array(1=> Array ( [id] => 2 [catid] => 6))
array(1=> Array ( [title] =>标题2 [content] => 内容2))
array(2=> Array ( [id] =>3 [catid] => 6))
array(2=> Array ( [title] =>标题3[content] => 内容3))
这是个动态的,最后要出现
 array(0=> Array ( [id] => 1 [catid] => 60 [title] =>标题 [content] => 内容))
 array(1=> Array ( [id] => 2 [catid] => 60 [title] =>标题2 [content] => 内容2))
 array(2=> Array ( [id] => 3 [catid] => 60 [title] =>标题3 [content] => 内容3))

#4


$a = array( array ( 'id' => 1, 'catid' => 6));
$b = array( array ( 'title' => '标题', 'content' => '内容'));

print_r(array( $a[0]+$b[0]) );
print_r(array( array_merge($a[0], $b[0]) ));
print_r(array_map('array_merge', $a, $b));
都可以得到
Array
(
    [0] => Array
        (
            [id] => 1
            [catid] => 6
            [title] => 标题
            [content] => 内容
        )

)

#5



    $arr=array(0=> Array ( 'id' => 1, 'catid' => 6));
    $brr=array(0=> Array ( 'title' =>'标题' ,'content' => '内容'));
    print_r(array_map('array_merge',$arr,$brr));

#6


对于你 #3 的样例,显然可以将他们按下标组合成两个二维数组
array_map('array_merge', $a, $b)

#7


引用 4 楼 xuzuning 的回复:
$a = array( array ( 'id' => 1, 'catid' => 6));
$b = array( array ( 'title' => '标题', 'content' => '内容'));

print_r(array( $a[0]+$b[0]) );
print_r(array( array_merge($a[0], $b[0]) ));
print_r(array_map('array_merge', $a, $b));
都可以得到
Array
(
    [0] => Array
        (
            [id] => 1
            [catid] => 6
            [title] => 标题
            [content] => 内容
        )

)



正解哦。。。。 两个数组如何合并到一起

#8


引用 3 楼 standford 的回复:
array_merge 后面会覆盖前面的。+的话前面覆盖后面的。不知道大家还有什么办法


array(0=> Array ( [id] => 1 [catid] => 6))
array(0=> Array ( [title] =>标题 [content] => 内容))
array(1=> Array ( [id] => 2 [catid] => 6))
array(1=> Array ( [title] =>标题2 [content] => 内容2))
array(2=> Array ( [id] =>3 [catid] => 6))
array(2=> Array ( [title] =>标题3[content] => 内容3))
这是个动态的,最后要出现
 array(0=> Array ( [id] => 1 [catid] => 60 [title] =>标题 [content] => 内容))
 array(1=> Array ( [id] => 2 [catid] => 60 [title] =>标题2 [content] => 内容2))
 array(2=> Array ( [id] => 3 [catid] => 60 [title] =>标题3 [content] => 内容3))


你键名不同怎么会覆盖?请给出你会覆盖的测试数据和结果。