php数组合并用加号和用array_merge()的区别

第一先看数组元素:

<?php$a = array(‘r‘=>1,2,3,4);
var_dump(‘a‘,$a);
$b = array(‘r‘=>5,6,7,8);
var_dump(‘b‘,$b);
$c = array(‘r‘=>5,6,7,8,9);
var_dump(‘c‘,$c);
var_dump(‘a+b‘,$a+$b);
var_dump(‘a+c‘, $a+$c);
var_dump(‘amb‘, array_merge($a, $b));
var_dump(‘amc‘, array_merge($a, $c));

第二看输出:

string ‘a‘ (length=1)array
  ‘r‘ => int 1
  0 => int 2
  1 => int 3
  2 => int 4string ‘b‘ (length=1)array
  ‘r‘ => int 5
  0 => int 6
  1 => int 7
  2 => int 8string ‘c‘ (length=1)array
  ‘r‘ => int 5
  0 => int 6
  1 => int 7
  2 => int 8
  3 => int 9string ‘a+b‘ (length=3)array
  ‘r‘ => int 1
  0 => int 2
  1 => int 3
  2 => int 4string ‘a+c‘ (length=3)array
  ‘r‘ => int 1
  0 => int 2
  1 => int 3
  2 => int 4
  3 => int 9string ‘amb‘ (length=3)array
  ‘r‘ => int 5
  0 => int 2
  1 => int 3
  2 => int 4
  3 => int 6
  4 => int 7
  5 => int 8string ‘amc‘ (length=3)array
  ‘r‘ => int 5
  0 => int 2
  1 => int 3
  2 => int 4
  3 => int 6
  4 => int 7
  5 => int 8
  6 => int 9

结论:用加号合并数组:既考虑数字索引的键值对,也考虑字符串索引的键值对,用前边数组的值覆盖后边的键名相同的值;

用array_merge()合并数组:只考虑字符串索引的键值对,用后边数组的值覆盖掉前面数组中键名相同的值,数字索引的值则不覆盖,同时保留

另外:array_merge()会重排两个数组的数字索引,"+"则不会

时间: 2024-10-09 12:36:32

php数组合并用加号和用array_merge()的区别的相关文章

php 合并数组 &quot;+&quot;和&quot;array_merge&quot;的区别

主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意 1)键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖) 2)键名为字符时,+仍然把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉,但array_merge()此时会覆盖掉前面相同键名的值 <?php$array1 = array(0 => 'zero_a', 2 => 

PHP数组合并+与array_merge的区别分析 &amp; 对多个数组合并去重技巧

PHP中两个数组合并可以使用+或者array_merge,但之间还是有区别的,而且这些区别如果了解不清楚项目中会要命的! 主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意 1)键名为数字时,array_merge()后面的值将不会覆盖原来的值,而是附加到后面,但+合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖) 2)键名为字符串时,array_merge()此时会覆盖掉前面相同键名的值,但+仍然把最先出现的值作为最

php数组合并方法array_merge + 排序array_multisort方法

$dingdan = array_merge($jie_dingdan,$user_dingdan);//数组合并方法 $orderFile = array(); foreach($dingdan as $vo){ $orderFile[]=$vo['time']; } array_multisort($orderFile ,SORT_DESC, $dingdan );//数组合并后排序方法需要的值:按照哪个字段排序,升降排序(SORT_DESC升序 SORT_ASC降序),合并后的数组 原文地

php数组合并

php的array,和java是有很大差距的,虽然php的弱类型的设计可能会被很多java.C++的程序员诟病,但是我觉得在数组容器的设计上,php走的比java和C++都要远. java的容器设计除了不彻底的问题,其允许存在类C++的数组的存在,是java语言本身唯一一处不满足一切皆对象的存在. 实际上容器的存在,本身是要降低一定的效率的,可是如果过分强调效率,为什么不干脆使用机器码呢?所以我不太喜欢那些拿php容器设计走的过分远的观点. 众所周知,php的array本身是map. 对于普通数

PHP中数组合并的两种方法及区别介绍

PHP数组合并两种方法及区别 如果是关联数组,如下: 复制代码代码如下: $a = array( 'where' => 'uid=1', 'order' => 'uid', ); $b = array( 'where' => 'uid=2', 'order' => 'uid desc', ); 1. array_merge,如果两个数组存在相同的key,后面的一个会覆盖前面的 复制代码代码如下: <?php $c = array_merge($a, $b); var_expo

数组合并函数,二维数组相同字段合并到一起。

一般从数据库中提取数据时,会遇到各种各样类型的数据,要求也不尽相同.自己这两天开发的时候遇到一个很纠结的问题,如下: 比如一个二维数组是这样的: Array ( [0] => Array ( [uid] => 231 [username] => 123456 [active] =>aaaa [transfer] =>1111 ) [1] => Array ( [uid] => 231 [username] =>123456 [active] => bb

将一个二维数组合并成一个一维数组

大家都知道php有内置的数组合并函数array_merage($arr,$arr1,$arr2,$arr3);那如何把一个二维数组如array(array('a'=>1,'b'=>2),array('c'=>3,'d'=>4)) 合并成如下的数组 array('a'=>1,'b'=>2,'c'=>3,'d'=>4);似乎,php目前还没有这样的内置函数吧,于是自己动手写了两种方法,仅供大家参考 第一种.方法当然是递归法呢,代码如下 <?php $new

php二位数组合并

转自:http://www.cnblogs.com/losesea/archive/2013/06/14/3134900.html 题目:有以下2个二维数组 1$a=Array(0 => Array(id => 66,class_name => www.iiwnet.com),1 => Array(id => 67,class_name => linux ));2$b=Array(0 => Array(class_count=> 8),1 => Arr

PHP 自定义方法实现数组合并

在PHP中提供了强大的数组功能,对于数组的合并也提供了两个方法:array_merge 和 array_merge_recursive 但对于我们千变万化的业务来说这些内置的方法并不完全能满足我们的要求 如我现在就遇到了数组合并这方面的问题,要求是这样的: 有两个二维数组,这两个数组大部分的健名是相同的 但有些健名可能并不存在于另一个数组中,现在需要我做的是将第二个数组中所有健值复制到第一个数组中(条件是:两个数组某个健名的值是相同的情况下) 显然内置的两个方法都不能满足要求(两个方法都只是将第