php数组合并三种方式

  • 时间:2019-03-11 20:20
  • 来源:简明现代魔法
  • 作者:赖床四少
  • 阅读:978
php数组合并三种方式,在PHP中合并两个或多个数组有:运算符“+”,array_merge()函数,array_merge_recursive()函数,下面就来具体介绍一下如何合并数组,希望对大家有所帮助。

在PHP中合并两个或多个数组有:运算符“+”,array_merge()函数,array_merge_recursive()函数,下面就来具体介绍一下如何合并数组,希望对大家有所帮助。

这里为了方便大家查看演示效果,我们分别定义两组数组:

// 数字键名
$array1 = [
    1=>'苹果',
    2=>'西瓜',
    3=>'橙子',
];

$array2 = [
    2=>'石榴',
    3=>'梨子',
    4=>'香蕉',
];

// 字符串键名  
$array3 = [
    'a' => '冬瓜',
    'b' => '白菜',
    'c' => '番茄',
];

$array4 = [
    'b' => '土豆',
    'c' => '南瓜',
    'e' => '辣椒',
];

PHP数组合并第一种方式:+号方式

规则:当两个数组的键名是数字键名或者字符串键名可以直接 +,$c = $a + $b,在$a后追加($b在$a中不存在的键名)键名和值。

例:

echo "<pre>";
print_r($array1+$array2);
print_r($array3+$array4);

打印结果如下:

Array
(
    [1] => 苹果
    [2] => 西瓜
    [3] => 橙子
    [4] => 香蕉
)
Array
(
    [a] => 冬瓜
    [b] => 白菜
    [c] => 番茄
    [e] => 辣椒
)

注意:

1、不覆盖,只是追加不存在的键名和对应的值。

2、键名不重新索引。

3、无论是全部数字键名还是混合,都只是追加键名和值,如果键名相同则不进行追加,即把最先出现的值作为最终结果返回。

PHP数组合并第二种方式:array_merge()

规则:array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。 如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。 

例:

echo "<pre>";
print_r(array_merge($array1,$array2));
print_r(array_merge($array3,$array4));

打印结果如下:

Array
(
    [0] => 苹果
    [1] => 西瓜
    [2] => 橙子
    [3] => 石榴
    [4] => 梨子
    [5] => 香蕉
)
Array
(
    [a] => 冬瓜
    [b] => 土豆
    [c] => 南瓜
    [e] => 辣椒
)

注意:

1、数字索引,不会覆盖,值合并后,键名会连续方式重新索引

2、字符串键名,则该键名后面的值将覆盖前一个值

PHP数组合并第三种方式:array_merge_recursive()

规则:

array_merge_recursive() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。 

如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去,因此如果一个值本身是一个数组,本函数将按照相应的条目把它合并为另一个数组。

然而,如果数组具有相同的数组键名,后一个值将不会覆盖原来的值,而是附加到后面。

例:

echo "<pre>";
print_r(array_merge_recursive($array1,$array2));
print_r(array_merge_recursive($array3,$array4));

打印结果如下:

Array
(
    [0] => 苹果
    [1] => 西瓜
    [2] => 橙子
    [3] => 石榴
    [4] => 梨子
    [5] => 香蕉
)
Array
(
    [a] => 冬瓜
    [b] => Array
    (
        [0] => 白菜
        [1] => 土豆
    )
    
    [c] => Array
    (
        [0] => 番茄
        [1] => 南瓜
    )
    
    [e] => 辣椒
)

注意:规则跟array_merge基本相同,只是在处理相同字符键名的时候,采用递归追加。

以上就是关于“php数组合并三种方式”的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流。