PHP數組合并函數+、array_merge、array_merge_recursive
來源:程序員人生 發布時間:2014-05-08 15:52:24 閱讀次數:3591次
我在php學習在使用到最多的數據合并方法就是array_merge、array_merge_recursive函數了,當然還會少用到操作符(+)函數了,下面我來給大家整理一下這幾個函數的一些用法.
PHP中,有3種方法來進行數組合并:操作符(+)、array_merge、array_merge_recursive,其中前兩種方式為一維數組的合并,第三種為遞歸合并.
在說PHP的數組合并之前,先要明白,PHP的數組分為索引數組和關聯數組。索引數組是指沒有鍵值和鍵值為數字的數組,關聯數組是指鍵值為字符的數組。
下面說說操作符(+)和array_merge的區別:
1.當為索引數組時,合并相同鍵值的數組,操作符以最前面的值為合并后的結果,array_merge則是把相同鍵值的數組合并,并重新索引(不同鍵值的數組合并時,也會從0開始重新生成數字索引)。
1、“+”運算符
規則:當兩個數組的鍵名是數字鍵名或者字符串鍵名 $c = $a + $b 在$a后追加($b在$a中不存在的鍵名)鍵名和值
注意:1、不覆蓋,只是追加不存在的鍵名和對應的值 2、鍵名不重新索引 3、無論是全部數字鍵名還是混合,都只是追加鍵名和值,如果鍵名相同則不進行追加,即把最先出現的值作為最終結果返回.
例1:數字鍵名,代碼如下:
- $a = array(
- 'a',
- );
- $b = array(
- 'u',
- );
- $c = $a + $b;
- var_dump($c);
-
- output:
- array(1) {
- [0]=>
- string(1) "a"
- }
例2:數字鍵名,代碼如下:
- $a = array(
- 66=>'a',
- );
- $b = array(
- 60=>'u',
- 66=>'c'
- );
- $c = $a + $b;
- var_dump($c);
-
- output:
- array(2) {
- [66]=>
- string(1) "a"
- [60]=>
- string(1) "u"
- }
例3:字符鍵名,代碼如下:
- <?php
- $a = array(
- 1=>'a',
- 2=>'b',
- 'c'=>'c',
- 'd'=>'d',
- );
- $b = array(
- 1=>'u',
- 3=>'v',
- 'c'=>'w',
- 'd'=>'x',
- 'y'=>'y',
- 60=>'z',
- );
- $c = $a + $b;
- var_dump($c);
- ?>
-
- array(7) {
- [1]=>
- string(1) "a"
- [2]=>
- string(1) "b"
- ["c"]=>
- string(1) "c"
- ["d"]=>
- string(1) "d"
- [3]=>
- string(1) "v"
- ["y"]=>
- string(1) "y"
- [60]=>
- string(1) "z"
- }
2.當為關聯數組時,合并相同字符鍵值的數組,操作符合并規則是前面的覆蓋后面的,array_merge則是后面的覆蓋前面的.
例,代碼如下:
- $arr5 = array('a'=>'aaaa');
- $arr6 = array('a'=>'bbbb');
- var_dump($arr5+$arr6);
- var_dump(array_merge($arr5,$arr6));
-
- array (size=1)
- 'a' => string 'aaaa' (length=4)
- array (size=1)
- 'a' => string 'bbbb' (length=4)
array_merge() 將一個或多個PHP數組合并起來,一個數組中的值附加在前一個數組的后面,返回作為結果的數組。
如果輸入的數組中有相同的字符串鍵名,則該鍵名后面的值將覆蓋前一個值,然而,如果數組包含數字鍵名,后面的值將不會覆蓋原來的值,而是附加到后面.
如果只給了一個數組并且該數組是數字索引的,則鍵名會以連續方式重新索引。
3.array_merge_recursive的合并規則和array_merge相同,只是array_merge_recursive支持多維數組的合并,例,代碼如下:
- $a = array(
-
- 1=>'a',
- 2=>'b',
- 'c'=>'c',
- 'd'=>'d',
-
- );
-
- $b = array(
- 1=>'u',
- 3=>'v',
- 'c'=>'w',
- 'd'=>'x',
- 'y'=>'y',
- 60=>'z',
-
- );
- var_dump(array_merge_recursive($a,$b));
-
- array (size=8)
- 0 => string 'a' (length=1)
- 1 => string 'b' (length=1)
- 'c' =>
- array (size=2)
- 0 => string 'c' (length=1)
- 1 => string 'w' (length=1)
- 'd' =>
- array (size=2)
- 0 => string 'd' (length=1)
- 1 => string 'x' (length=1)
- 2 => string 'u' (length=1)
- 3 => string 'v' (length=1)
- 'y' => string 'y' (length=1)
- 4 => string 'z' (length=1)
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈