重新认识php array_merge函数 |
本文标签:php,array_merge 重新认识php array_merge函数 今天因一个Bug重新审视了下array_merge()这个函数 。 定义:array_merge — 合并一个或多个数组 规范:array array_merge(array $array1 [, array $...]) 说明: 1. 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面 。 2. 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值 。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面 。 3. 如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引 。 这个函数在手册中有详尽示例,用途也很广且实用 。 今天遇到的一个问题是手册中有警告的,只是此前没注意到,导致了一个致命的错误 。如下: PHP >= 5.0 版本,array_merge() 只接受array类型的参数 。不过可以用强制转换来合并其它类型 。 对于是foreach等代码产生的数组变量要注意了,要么初始化该变量为空数组,要么就在合并时做个强制转换 。不然,会有大苦头吃 。因此,保持一个初始化变量的习惯也是个好事 。 PHP中合并数组分成两种情况 1、如果这两个数组中有相同的字符串键名: <?php $book1 = array(linux=>linux服务器配置与管理,php=>PHP程序设计); $book2 = array(linux=>服务器配置与管理,jsp=>PHP); $result = array_merge($book1,$book2); print_r($result); ?> 输出为: Array ( [linux] => 服务器配置与管理 [php] => PHP程序设计 [jsp] => PHP ) <?php $book1 = array(linux=>linux服务器配置与管理,php=>PHP程序设计); $book2 = array(linux=>服务器配置与管理,jsp=>PHP); $result = array_merge_recursive($book1,$book2); print_r($result); ?> 输出为: Array ( [linux] => Array ( [0] => linux服务器配置与管理 [1] => 服务器配置与管理 ) [php] => PHP程序设计 [jsp] => PHP ) <?php $book1 = array(linux服务器配置与管理,PHP程序设计); $book2 = array(服务器配置与管理,PHP); $result = array_merge($book1,$book2); print_r($result); ?> 结果是: Array ( [0] => linux服务器配置与管理 [1] => PHP程序设计 [2] => 服务器配置与管理 [3] => PHP ) |