深入解析array_merge函数的用法 php

array_merge是我们用来合并数组使用最多的函数;下面就来深入解析array_merge的用法;第四点是个坑需注意;

1:如果数组中有相同的字符串键名;则该键名后面的值覆盖前面的值; 如果想让前面的值覆盖后面;则可以使用+号;

$a=array(
    ‘a‘=>‘first a‘,
    ‘b‘=>‘b‘
    );
$b=array(
    ‘c‘=>‘c‘,
    ‘a‘=>‘second a‘
    );
$result=array_merge($a,$b);
var_dump($result);
$result=$a+$b;
var_dump($result);
使用 array_merge 保留了second a 输出如下
Array
(
    [a] => second a
    [b] => b
    [c] => c
)
使用+号 则保留了first_a 输出如下
Array
(
    [a] => first a
    [b] => b
    [c] => c
)

2:如果数组中有相同的数字键名、则格式化键名并保留全部的值;

$a=array(
    0=>‘zero_a‘, 
    2=>‘two_a‘, 
    3=>‘three_a‘
    );
$b=array(
    1=>‘one_b‘, 
    3=>‘three_b‘, 
    4=>‘four_b‘
    );
$result=array_merge($a,$b);
var_dump($result);
输出如下
Array
(
    [0] => zero_a
    [1] => two_a
    [2] => three_a
    [3] => one_b
    [4] => three_b
    [5] => four_b
)

3:如果只传入一个数组;并且键名是数字;则格式化键名;

$a=array(
    1=>1,
    3=>3,
    6=>6
    );
$result=array_merge($a);
var_dump($result);
输出如下
Array
(
    [0] => 1
    [1] => 3
    [2] => 6
)

4:如果传的参数中有一个不是数组;则返回null;此处需要注意;在开发过程中;我们可能需要把两次查询的数据合并成一个数组;如果有一个查询为空;那么使用array_merge函数合并的结果就是null,我曾多次被null所坑而写此篇博客重要的原因也是因为此;

$a=array(
    1=>1,
    6=>6
    );
$b=‘‘;
$result=array_merge($a,$b);
var_dump($result);
输出如下
null

因此;在不确定需要array_merge的数组是否有空值的时候;直接使用(array)强制转数组;上面的代码就可以改成如下形式

$result=array_merge((array)$a,(array)$b);

本文为白俊遥原创文章,转载无需和我联系,但请注明来自白俊遥博客http://www.baijunyao.com

时间: 2024-12-04 22:45:27

深入解析array_merge函数的用法 php的相关文章

有关php array_merge函数的用法

分享下array_merge函数的用法. PHP中合并数组分成两种情况:1.如果这两个数组中有相同的字符串键名 2.如果这两个数组中有相同的数值键名 重新认识php array_merge函数 今天因一个Bug重新审视了下array_merge()这个函数.定义:array_merge — 合并一个或多个数组规范:array array_merge(array $array1 [, array $...])说明:1. 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面.2. 如

转:从编译链接过程解析static函数的用法

关于static函数的用法

解析PHP中ob_start()函数的用法

解析PHP中ob_start()函数的用法 本篇文章是对PHP中ob_start()函数的用法进行了详细的分析介绍,需要的朋友参考下 ob_start()函数用于打开缓冲区,比如header()函数之前如果就有输出,包括回车/空格/换行/都会有"Header had all ready send by"的错误,这时可以先用ob_start()打开缓冲区PHP代码的数据块和echo()输出都会进入缓冲区而不会立刻输出.当然打开缓冲区的作用很 多,只要发挥你的想象.可以总结以下四点: 1.

(转)解析PHP中ob_start()函数的用法

本篇文章是对PHP中ob_start()函数的用法进行了详细的分析介绍,需要的朋友参考下 ob_start()函数用于打开缓冲区,比如header()函数之前如果就有输出,包括回车/空格/换行/都会有"Header had all ready send by"的错误,这时可以先用ob_start()打开缓冲区PHP代码的数据块和echo()输出都会进入缓冲区而不会立刻输出.当然打开缓冲区的作用很多,只要发挥你的想象.可以总结以下四点: 1.用于header()之前ob_start();

详解php 获取文件名basename()函数的用法

PHP 中basename()函数给出一个包含有指向一个文件的全路径的字符串,此函数返回基本的文件名,本篇文章收集了关于使用PHP basename()函数获取文件名的几篇文章,希望对大家理解使用PHP basename()函数获取文件名有所帮助. 1.详解php basename()函数获取文件名的用法 php basename()函数给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名.如果文件名是以 suffix 结束的,那这一部分也会被去掉.在 Windows 中,斜线(/

PHP array_merge() 函数

实例 把两个数组合并为一个数组: 定义和用法 array_merge() 函数把一个或多个数组合并为一个数组. 提示:您可以向函数输入一个或者多个数组. 注释:如果两个或更多个数组元素有相同的键名,则最后的元素会覆盖其他元素. 注释:如果您仅向 array_merge() 函数输入一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引(参见下面的实例 1). 提示:该函数与 array_merge_recursive() 函数之间的不同是在处理两个或更多个数组

arguments.callee 调用函数自身用法

arguments.callee 调用函数自身用法 arguments.callee 在哪一个函数中运行,它就代表哪个函数. 一般用在匿名函数中. 在匿名函数中有时会需要自己调用自己,但是由于是匿名函数,没有名子,无名可调. 这时就可以用arguments.callee来代替匿名的函数. (function(n){ if(n > 1) return n* arguments.calle(n-1); return n; })(10); JSON.parse()和JSON.stringify()前端

mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法

mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法: 语法: TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2) 说明: 返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差.其结果的单位由interval 参数给出.interval 的法定值同TIMESTAMPADD()函数说明中所列出的相同. mysql> SELECT TIMESTAMPDIFF(MONTH,'200

【转】oracle的substr函数的用法

[转]oracle的substr函数的用法 oracle的substr函数的用法 取得字符串中指定起始位置和长度的字符串   substr( string, start_position, [ length ] ) 如:     substr('This is a test', 6, 2)     would return 'is'     substr('This is a test', 6)     would return 'is a test'     substr('TechOnThe