PHP中對數組的處理是最常用的必備技能之一。自己總結了一下幾個最常用的處理數組的高級函數。
1. array_merge()
合并數組,將一個或多個數組的單元合并起來,一個數組中的值附加在前一個數組的后面,最后返回一個數組。
關聯數組:有相同的字符串鍵名時,則該鍵名后面的值將覆蓋前一個值.
索引數組:后面的值將不會覆蓋原來的值,而是附加到后面
array array_merge (array array1 array2…,arrayN)
例子:
- <?php
- $a = array("a","b","c");
- $b = array("1","2","3");
- $c = array_merge($a, $b);
- print_r($c);
- // 輸出結果
- // Array ( [0] => a [1] => b [2] => c [3] => 1 [4] => 2 [5] => 3 )
- ?>
2. array_merge_recursive()
功能同array_merge(),只不過遇到相同值時處理方式不同.
關聯數組:有相同的字符串鍵名時,則該鍵值變成一個數組,將相同鍵值放在一個數組里
例子:
- <?php
- $a = array("a" => "123", "b" => "yes");
- $b = array("c" => "no", "a" => "aaa");
- $d = array_merge_recursive($a, $b);
- print_r($d);
- // 輸出結果
- // Array ( [a] => Array ( [0] => 123 [1] => aaa ) [b] => yes [c] => no )
- ?>
3. array_slice()
拆分索引數組,類似于substr()的用法, offset開始切,切length這么多個, 不設置length則是切到尾
array array_slice (array array, int offset[,int length])
例子:
- <?php
- $a = array("A", "B", "C", "D", "E", "F", "G");
- $b = array_slice($a, 3);
- print_r($b);
- // 輸出
- // Array ( [0] => D [1] => E [2] => F [3] => G )
- ?>
4. array_multisort()
返回排序數組:
array_multisort(array1,sorting order,sorting type,array2,array3...)
這個函數功能很強大,有幾個用法:
直接進行排序
- <?php
- $a1=array("Dog","Cat");
- $a2=array("Fido","Missy");
- array_multisort($a1,$a2);
- print_r($a1);
- print_r($a2);
- // Array ( [0] => Cat [1] => Dog ) Array ( [0] => Missy [1] => Fido )
- ?>
設置排序方式進行排序
- <?php
- /* 設置倒序正序 */
- $a1=array("Dog","Dog","Cat");
- $a2=array("Pluto","Fido","Missy");
- array_multisort($a1,SORT_ASC,$a2,SORT_DESC);
- print_r($a1);
- print_r($a2);
- // Array ( [0] => Cat [1] => Dog [2] => Dog ) Array ( [0] => Missy [1] => Pluto [2] => Fido )
- /* 設置倒序正序,排序標準 */
- $a1=array(1,30,15,7,25);
- $a2=array(4,30,20,41,66);
- $num=array_merge($a1,$a2);
- array_multisort($num,SORT_DESC,SORT_NUMERIC);
- print_r($num);
- // Array ( [0] => 66 [1] => 41 [2] => 30 [3] => 30 [4] => 25 [5] => 20 [6] => 15 [7] => 7 [8] => 4 [9] => 1 )
- ?>
二維數組根據某鍵值進行排序
- <?php
- /* time為要排序字段, SORT_DESC降序排列, $all要排序的數組 */
- foreach ($all as $k => $v)
- {
- $time[] = $v['time'];
- }
- array_multisort($time, SORT_DESC, $all);
- ?>
5. array_intersect()和array_intersect_assoc()
array_intersect()返回一個保留了鍵的數組,這個數組只由第一個數組中出現的且在其他每個輸入數組中都出現的值組成。
array_intersect_assoc()返回一個在第一個數組中出現,且在所有其他輸入數組中也出現的鍵/值對組成的數組。
應用場景: 共同好友推薦
- <?php
- $a = array("Kevin","Mike","Jone");
- $b = array("Jack","Kevin","Anna");
- $c = array("Steven","Json","Kevin");
- $output = array_intersect($a, $b, $c);
- print_r($output);
- //Vevb.com
- // output
- // Array ( [0] => Kevin )
- ?>
新聞熱點
疑難解答