当前位置: 首页 > 编程笔记 >

重新认识php array_merge函数

邹星火
2023-03-14
本文向大家介绍重新认识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 )

 
说明,后者将替换前者。但如果使用的是array_merge_recursive()则可保留,并作一个子数组存在。如:
 

<?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 )

 
2、如果这两个数组中有相同的数值键名:

<?php
 
 $book1 = array('linux服务器配置与管理','PHP程序设计');
 $book2 = array('服务器配置与管理','PHP'); 
 
 $result = array_merge($book1,$book2);
 print_r($result);
?>

结果是:

Array ( [0] => linux服务器配置与管理 [1] => PHP程序设计 [2] => 服务器配置与管理 [3] => PHP )

 
这时,如果数组中包含相同的数字键名,则后面的不会覆盖前面的值,而是后面的键值按顺序依次增加,附在后边。明白了吗,^_^

 类似资料:
  • 本文向大家介绍重新认识vue之事件阻止冒泡的实现,包括了重新认识vue之事件阻止冒泡的实现的使用技巧和注意事项,需要的朋友参考一下 冒泡的表现 近期用vue做了一个需求,大概是同一个区域,点击不同位置有不同的响应函数,还有个总的响应函数,好吧,如下图所示: 他们的DOM结构如下: 冒泡在这里的表现就是当用户点击图中事件1或事件2区域时,事件3也会执行。这是因为时间冒泡机制,导致点击'handleC

  • 我正在设置身份框架(2?)用于我的ASP.NET站点。我有确认电子邮件工作,但我不知道在哪里或如何允许用户请求重新发送确认电子邮件。 我在这里找到了这个部分‘重新发送电子邮件确认链接',但那是为MVC写的(我根本不知道很多)。

  • 当插入数据数值“财政月份的第5周”不被识别时,我得到了这个错误,我甚至没有在我的SQL中的错误消息中显示的字段,请参见附加的代码。我不知道要找什么,我在这里发帖,至少请给我指出一个我需要寻找的主题

  • 如果你已经在学习本书的知识点,就说明你可能或多或少知道一些ElasticSearch的相关知识,至少已经了解了其核心概念和基本用法了。为了更深入地理解这款搜索引擎的工作原理,还是简单的论述一下相关知识吧。 大家应该都已经知道ElasticSearch是一款企业应用型的软件工具,用来建立搜索相关的程序。它最初由ShayBanon编写(它的前身是compass),并且于2010年二月份发布了第一个版本

  • 问题内容: 如果我有一个功能: 如果我想重新定义该函数,它会像重写它一样简单吗? 问题答案: 不,这会引发错误: Runkit提供的选项包括和。

  • Gradle是什么? Gradle是一个自动化构建工具,采用Groovy的Domain Specific Language(领域特定语言)来描述和控制构建逻辑.它的特点是语法简洁、可读性强、配置灵活等等. 基于Intellij IDEA社区版本开发的Android Studio天生支持Gradle构建程序. Gradle使用指南请看:https:\/\/docs.gradle.org\/curre