合并

array_merge — 合并一个或多个数组
语法

array array_merge( array $array1[, array $...] )

描述
  • array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组
  • 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面
  • 如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引
参数
参数 描述
array1 需要合并的数组
... ...
返回值
  • 返回结果数组
举例
// 示例1-如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面
$a = ['name' => '张三', 'age' => 18, 'info' => ['测试', '年龄']];
$b = ['address' => '山东', 'name' => '李四'];
$result = array_merge($a, $b);
print_r($result); 
// 结果
Array
(
    [name] => 李四
    [age] => 18
    [info] => Array
        (
            [0] => 测试
            [1] => 年龄
        )

    [address] => 山东
)
// 示例2-如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。注意array_values也会重新索引数组
$a = [4 => 1, 5 => 2];
$result = array_merge($a);
print_r($result); 
// 结果
Array
(
    [0] => 1
    [1] => 2
)

array_merge_recursive — 递归地合并一个或多个数组
语法

array array_merge_recursive( array $array1[, array $...] )

描述
  • array_merge_recursive() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组
  • 如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去,因此如果一个值本身是一个数组,本函数将按照相应的条目把它合并为另一个数组。然而,如果数组具有相同的数组键名,后一个值将不会覆盖原来的值,而是附加到后面。
参数
参数 描述
array1 要合并的初始数组
返回值
  • 一个结果数组,其中的值合并自附加的参数
举例
// 示例1-多个数组,相同的字符串键名,这些值会被合并到一个数组中去,这将递归下去
$a = ['name' => '张三', 'age' => 18, 'info' => ['测试', '年龄']];
$b = ['address' => '山东', 'name' => '李四', 'age' => 25];
$result = array_merge_recursive($a, $b);
print_r($result);
// 结果
Array
(
    [name] => Array
        (
            [0] => 张三
            [1] => 李四
        )

    [age] => Array
        (
            [0] => 18
            [1] => 25
        )

    [info] => Array
        (
            [0] => 测试
            [1] => 年龄
        )

    [address] => 山东
)
// 示例2-多个数组,相同的数字键名,后一个值将不会覆盖原来的值,而是附加到后面
$a = [1,2,3,4,5];
$b = [7,8,9];
$result = array_merge_recursive($a, $b);
print_r($result)
// 结果
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 7
    [6] => 8
    [7] => 9
)
// 示例3-只有一个数组,不会重新索引数组,这与array_merge不同
$a = ['name' => '张三', 'age' => 18, 'info' => ['测试', '年龄']];
$result = array_merge_recursive($a);
print_r($result);
// 结果
Array
(
    [name] => 张三
    [age] => 18
    [info] => Array
        (
            [0] => 测试
            [1] => 年龄
        )

)

results matching ""

    No results matching ""