首页 > 编程 > PHP > 正文

php中array_merge函数的详细用法(附实例)

2020-03-22 17:12:09
字体:
来源:转载
供稿:网友
本篇文章给大家带来的内容是关于php中array_merge函数详细用法(附实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

array_merge 这个函数很实用,也很常用,但是它有一些特性,不注意的话就会造成麻烦。前几天修改同事代码的时候,就出现了这种问题,所以查些资料写下来。

定义与语法

array array_merge ( array $array1 [, array $... ] )
合并一个或多个数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

语法很简单,返回值是合并后的数组(并不总是你所期望的返回值)。

实例

 ?php// 索引数组$arr1 = array(0 = apple , 1 = banana $arr2 = array(1 = pear , 2 = orange $arr3 = array( pitaya = 火龙果 print_r(array_merge($arr1, $arr2));// array_merge会重建索引 Array ( [0] = apple [1] = banana [2] = pear [3] = orange )echo br / print_r(array_merge($arr1, $arr2, $arr3));// 索引数组和关联数组合并 Array ( [0] = apple [1] = banana [2] = pear [3] = orange [pitaya] = 火龙果 )echo br / // 索引数组不会覆盖,但是使用 + 的话,前面的值会覆盖后面相同索引的值print_r($arr1 + $arr2);// Array ( [0] = apple [1] = banana [2] = orange )echo br / // 关联数组$arr1 = array( apple = 苹果 , banana = 香蕉 $arr2 = array( apple = 黄元帅苹果 , orange = 橙子 print_r(array_merge($arr1, $arr2));// Array ( [apple] = 黄元帅苹果 [banana] = 香蕉 [orange] = 橙子 )echo br / // 后面的值会覆盖前面相同key的值,而使用 + 则正好相反,前面的值会覆盖后面的值print_r($arr1 + $arr2);// Array ( [apple] = 苹果 [banana] = 香蕉 [orange] = 橙子 )

填坑

那么 array_merge 所谓的坑是什么呢?
实际使用中,使用框架数据库中查询数据,返回的是二维数组或者一维数组。但是如果查询不到数据,返回的是 null ,这个时候使用 array_merge 的话,就会产生错误了。如下

 ?php$arr1 = array( apple , pear $arr2 = null;$arr3 = array_merge($arr1, $arr2);var_dump($arr3);// Warning: array_merge(): Argument #2 is not an array in D:/WWW/test.php on line 6// NULL

会产生一条 Warning,并且 array_merge 的返回值会是 null。
处理方法不难,只要将参数转换为数组即可,可以html' target='_blank'>封装函数进行处理。要注意的是参数为 false 怎么处理。如下

 ?php * 完善 array_merge * 将所有参数转换为数组,null、false 转换为空数组 * @param array ...$args * @return arrayfunction array_merge_perfect(...$args) $fun = function ($value) { if ($value === false) { return array(); return (array)$value; // 将所有参数都转换为 array 类型 $arr = array_map($fun, $args); $newArray = array(); foreach ($arr as $key = $value) { $newArray = array_merge($newArray, $value); return $newArray;$arr1 = array( test = array( apple , pear ), test1 = array( apple , pear $arr2 = false;$arr3 = null;print_r((array)$arr2);// Array ( [0] = )echo br / print_r((array)$arr3);// Array ( )echo br / print_r(array_merge_perfect($arr1, $arr2));// Array ( [test] = Array ( [0] = apple [1] = pear ) [test1] = Array ( [0] = apple [1] = pear ) )echo br / print_r(array_merge_perfect($arr1, $arr3));// Array ( [test] = Array ( [0] = apple [1] = pear ) [test1] = Array ( [0] = apple [1] = pear ) )echo br / print_r(array_merge_perfect($arr2, $arr3));// Array ( )echo br / 

以上就是php中array_merge函数的详细用法(附实例)的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表