PHP數組合並和去重的函數有哪些

PHP數組合並和去重的函數有哪些

1、總結

一句話總結:合併:array_merge() array_merge_recursive() +號;去重:array_flip() array_unique()

array_merge() array_merge_recursive() +號 array_flip() array_unique()

 

一、array_merge+以及array_merge_recursive數組合並時對相同的字符串索引的操做是怎樣的

+前面的覆蓋後面的
array_merge後面的覆蓋前面的
array_merge_recursive增長數組維度

array_merge則會用後面的值覆蓋前面出現的值;
+會用前面出現過的值覆蓋後面相同的key;
array_merge_recursive則會把相同的索引放到一個數組裏面,增長數組的維度;
php

 

二、array_merge+以及array_merge_recursive數組合並時對相同的數字索引的操做是怎樣的

array_merge和array_merge_recursive重建(新增)索引
+前面的覆蓋後面的

array_merge則會給重複的值重建索引(索引值從0開始);
+仍然是用前面出現過的值覆蓋後面的值;
array_merge_recursivearray_merge的處理方法同樣。
css

 

三、多維數組合並去重用的是哪一個函數?

array_flip()函數-數組鍵值的翻轉函數

array_flip()函數,而這個函數也是數組鍵值的翻轉函數html

$a = array('1001','1002'); $b = array('1002','1003','1004'); $c = array('1003','1004','1005'); $d = array_keys(array_flip($a) + array_flip($b) + array_flip($c));

 

 

 

 

 

2、PHP合併數組幾種方式總結

參考:PHP合併數組幾種方式總結 - 賴牀四少 - 博客園
https://www.cnblogs.com/lcss/p/7757784.html數組

今天在作項目的時候,想將多個數組進行去重合並的操做。在此前合併數組我一直用的是array_merge()這個函數,今天我百度了一下,原來還有‘+'號,和array_merge_recursive函數。函數

 

下面是一段對比的代碼spa

$array1 = array(2,4,"color" => "red"); $array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4); $result = array_merge($array1, $array2); echo "----------------array_merge---------------".PHP_EOL; print_r($result); echo "----------------+++++++++++---------------".PHP_EOL; print_r($array1+$array2); echo "----------------array_merge_recursive---------------".PHP_EOL; print_r(array_merge_recursive($array1,$array2));

 

 

結果以下所示code

----------------array_merge---------------Array( [0] => 2 [1] => 4 [color] => green [2] => a [3] => b [shape] => trapezoid [4] => 4)
----------------+++++++++++---------------Array( [0] => 2 [1] => 4 [color] => red [shape] => trapezoid [2] => 4)
----------------array_merge_recursive---------------Array( [0] => 2 [1] => 4 [color] => Array ( [0] => red [1] => green ) [2] => a [3] => b [shape] => trapezoid [4] => 4)

 

 

對比array_merge+以及array_merge_recursive結果的」color」的值咱們能夠看出:
1.對於相同的字符串索引,
array_merge則會用後面的值覆蓋前面出現的值;
+會用前面出現過的值覆蓋後面相同的key;
array_merge_recursive則會把相同的索引放到一個數組裏面,增長數組的維度;
2.對於相同的數字索引,
array_merge則會給重複的值重建索引(索引值從0開始);
+仍然是用前面出現過的值覆蓋後面的值;
array_merge_recursivearray_merge的處理方法同樣。htm

 

可是這只是把數組進行合併,我作合併的同時還想要去重應該怎麼辦呢,那就用到了另外兩個函數array_flip()函數array_keys() 函數blog

 

 

要講到數組合並與去重,這裏就不得不提array_flip()函數,而這個函數也是數組鍵值的翻轉函數。索引

 

For example:

 

$arr=array('10','11','12');$arr2=array('12','13','14');$arr3=array('14','15','16'); print_r(array_flip($arr)+array_flip($arr2)+array_flip($arr3)); output: Array ( [10] => 0 [11] => 1 [12] => 2 [13] => 1 [14] => 2 [15] => 1 [16] => 2 )

 

 

1.單數組去重複

array_unique($arrTest)

array_unique() 函數移除數組中的重複的值,並返回結果數組。

當幾個數組元素的值相等時,只保留第一個元素,其餘的元素被刪除。

返回的數組中鍵名不變。

<?php $a=array("a"=>"red","b"=>"green","c"=>"red"); print_r(array_unique($a)); ?> 運行結果:Array ( [a] => red [b] => green )

 

 

 

 

//2.多數組去重複

    array_keys(array_flip($arr1)+array_flip($arr2))

array_keys() 函數返回包含數組中全部鍵名的一個新數組。

若是提供了第二個參數,則只返回鍵值爲該值的鍵名。

返回包含數組中全部鍵名的一個新數組:

<?php $a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander"); print_r(array_keys($a)); ?> 運行結果:Array ( [a] => red [b] => green ) Array ( [0] => Volvo [1] => BMW [2] => Toyota )

 

 

 

 

對多個數組合並去重技巧

$a = array('1001','1002'); $b = array('1002','1003','1004'); $c = array('1003','1004','1005'); $d = array_keys(array_flip($a) + array_flip($b) + array_flip($c));

 

 

 

結合上邊這些函數的分析和使用,相信之後平常對數組合並已經基本不成問題了。

相關文章
相關標籤/搜索