Home  >  Article  >  Backend Development  >  PHP合并数组+号和array_merge的区别_php技巧

PHP合并数组+号和array_merge的区别_php技巧

WBOY
WBOYOriginal
2016-05-16 20:12:511705browse

PHP的数组融合一般有两种做法,一种是直接使用加号相加,另一种则是使用array_merge函数进行相加,两者之间有点区别:

1.相加会证数组中的自然index不被重置
2.相加方法中,被加的数组内的值不会被覆盖
3.merge函数中的自然index会被重置
4.merge函数,无所谓被merge和merge关系,越后面的array参数,其值,会覆盖较前面的array参数相同键的值

例子:

数组1:

$arr1 = array(
  10 => 'valueof10',
  11 => 'valueof11',
  'key1' => 'dataofkey1',
  'key2' => 'dataofkey2',
  'array' => array(
    'key1' => 1,
    'key2' => 'abc',
    'key3' => array(
      1, 2, 'name' => 'peter'
    ),
  ),
);

数组2:

$arr2 = array(
  10 => 'newvalueof10',
  11 => 'newvalueof11',
  'key1' => 'newdataofkey1',
  'key3' => 'newdataofkey3',
  'array' => array(
    'key1' => 2,
    'key2' => 'defg',
    'key3' => array(
      1, 2, 'name' => 'jonathan', 'gender' => 'male'
    ),
  ),
);

结果比较:

array (size=6)
 10 => string 'valueof10' (length=9)
 11 => string 'valueof11' (length=9)
 'key1' => string 'dataofkey1' (length=10)
 'key2' => string 'dataofkey2' (length=10)
 'array' => 
  array (size=3)
   'key1' => int 1
   'key2' => string 'abc' (length=3)
   'key3' => 
    array (size=3)
     0 => int 1
     1 => int 2
     'name' => string 'peter' (length=5)
 'key3' => string 'newdataofkey3' (length=13)
 
array (size=8)
 0 => string 'valueof10' (length=9)
 1 => string 'valueof11' (length=9)
 'key1' => string 'newdataofkey1' (length=13)
 'key2' => string 'dataofkey2' (length=10)
 'array' => 
  array (size=3)
   'key1' => int 2
   'key2' => string 'defg' (length=4)
   'key3' => 
    array (size=4)
     0 => int 1
     1 => int 2
     'name' => string 'jonathan' (length=8)
     'gender' => string 'male' (length=4)
 2 => string 'newvalueof10' (length=12)
 3 => string 'newvalueof11' (length=12)
 'key3' => string 'newdataofkey3' (length=13)

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn