一、檢查給定的鍵名或索引是否存在於數組中——array_key_existsphp
用法:array_key_exists($key(mixed),$input(array))返回TRUE和FALSEjava
$input_array=array("1"=>"java","op"=>"R","act"=>"python","php","redis");
$array=array("sd","wd","gh");
var_dump(array_key_exists(1,$array));
var_dump(array_key_exists("op",$input_array));
結果:bool(true) bool(true)python
二、返回數組中全部的鍵名——array_keysmysql
用法:array_keys($input(array)) 返回數組中的鍵名web
$input_array=array("1"=>"java","op"=>"R","act"=>"python","php","redis");
$array=array("sd","wd","gh");
var_dump(array_keys($array));
var_dump(array_keys($input_array));
結果:array(3) { [0]=> int(0) [1]=> int(1) [2]=> int(2) }
redis
array(5) { [0]=> int(1) [1]=> string(2) "op" [2]=> string(3) "act" [3]=> int(2) [4]=> int(3) }sql
三、將回調函數做用到給定數組的單元上 array_mapshell
用法:array_map(function,array1(array),array2...)感受這個和過濾函數array_filter理解起來有點相似,array_map能夠理解成是一個加工函數,加工方法本身寫。數組
function cube($n){
return($n * $n * $n);
}
$a = array(1, 2, 3, 4, 5);
var_dump(array_map("cube", $a));
結果:array(5){ [0]=> int(1) [1]=> int(8) [2]=> int(27) [3]=> int(64) [4]=> int(125) }app
四、合併一個或多個數組—array_merge(就是求並集)
語法:將一個數組中的值附加在另外一個數組後面,若是是數字索引,鍵名會以連續方式從新索引
$input_array=array("1"=>"java","op"=>"R","act"=>"python","php","redis");
$array=array("sd","wd","gh");
var_dump(array_merge($input_array,$array));
結果:array(8) {[0]=> string(4) "java" ["op"]=> string(1) "R" ["act"]=> string(6) "python" [1]=> string(3) "php" [2]=> string(5) "redis" [3]=> string(2) "sd" [4]=> string(2) "wd" [5]=> string(2) "gh" }
從新索引後鍵值java的鍵名由1變成了0
五、遞歸地合併一個或多個數組——array_merge_recursive
用法:和array_merge同樣,只是array_merge是求並集,而array_merge_recursive是實實在在的1+1=2,鍵值重複不會覆蓋,鍵名重複會自動的合併
$ar1 = array("color" => array("favorite" => "red"), 5,10);
$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
var_dump(array_merge_recursive($ar1, $ar2));
結果:array(4) { ["color"]=> array(2) { ["favorite"]=> array(2) { [0]=> string(3) "red" [1]=> string(5) "green" } [0]=> string(4) "blue" } [0]=> int(5) [1]=> int(10) [2]=> int(10) }
六、對多個數組或多維數組進行排序 -array_multisort
用法:array_multisort(array1,array2...),成功時返回 TRUE, 或者在失敗時返回 FALSE.
$ar1 = array("10", 101, 100, "a");
$ar2 = array(1, 3, "2", 1);
array_multisort($ar1, $ar2);
var_dump($ar1);
var_dump($ar2);
結果:
array(4){ [0]=> string(2) "10" [1]=> string(1) "a" [2]=> int(100) [3]=> int(101) } array(4) { [0]=> int(1) [1]=> int(1) [2]=> string(1) "2" [3]=> int(3) }
七、用值將數組填補到指定長度——array_pad
用法:array_pad($input(array),$size(int),mixed) 返回填充的結果
$array1=array(10,20,30);
$array2=array('java'=>array('redis','mysql'));
var_dump(array_pad($array1,6,'40'));
var_dump(array_pad($array2,4,'shell'));
結果:
array(6) { [0]=> int(10) [1]=> int(20) [2]=> int(30) [3]=> string(2) "40" [4]=> string(2) "40" [5]=> string(2) "40" }
array(4) { ["java"]=> array(2) { [0]=> string(5) "redis" [1]=> string(5) "mysql" } [0]=> string(5) "shell" [1]=> string(5) "shell" [2]=> string(5) "shell" }
八、將數組最後一個單元彈出(出棧)——array_pop
用法:array_pop($input(array)) 返回數組的最後一個單元,若是 array 爲空(或者不是數組)將返回 NULL。
$array1=array(10,20,30);
$array2=array();
var_dump(array_pop($array1));
var_dump(count($array1));
var_dump(array_pop($array2));
結果:int(30) int(2)(數組長度減1) NULL
九、計算數組中全部值的乘積——array_product
用法:array_product($array),(要求數組中都是數字)
$array1=array(10,20,30);
$array2=array(1,'er');
$array3=array(10,20,30=>20);
var_dump(array_product($array1));
var_dump(array_product($array2));
var_dump(array_product($array3));
結果:int(6000) int(0) int(4000)
十、將一個或多個單元壓入數組的末尾(入棧)——array_push
用法:array_push($array,mixed.....)這個是和array_pop出棧相對應的逐個追加到尾部,返回數組的個數
$array1=array(10,20,30);
var_dump(array_push($array1,'erer','weert'));
var_dump($array1);
結果:int(5) array(5) { [0]=> int(10) [1]=> int(20) [2]=> int(30) [3]=> string(4) "erer" [4]=> string(5) "weert" }
十一、從數組中隨機取出一個或多個單元——array_rand
用法:array_rand($array,$num_rep(int)) 隨機從數組中取出多個單元(返回的是鍵名)
$array1=array(10,20,30,40,50,60);
var_dump(array_rand($array1,3));
結果:array(3) { [0]=> int(0) [1]=> int(1) [2]=> int(4)}
十二、用回調函數迭代地將數組簡化爲單一的值——array_reduce
用法:array_reduce($input(array),function,int),將回調函數 function 迭代地做用到 input 數組中的每個單元中,從而將數組簡化爲單一的值。若是指定了可選參數 initial,該參數將被當成是數組中的第一個值來處理,或者若是數組爲空的話就做爲最終返回值
function rsum($v, $w){
$v += $w;
return $v;}
function rmul($v, $w){
$v *= $w;
return $v;}
$a = array(1, 2, 3, 4, 5);
$x = array();
var_dump(array_reduce($a, "rsum"));
var_dump(array_reduce($a, "rmul", 10));
var_dump(\array_reduce($x, "rsum", 1));
結果:int(15) int(1200) int(1)
1三、使用傳遞的數組遞歸替換第一個數組的元素——array_replace_recursive
用法:array_replace_recursive(array1,array2,array3....)使用後面數組元素的值替換第一個數組 array 的值。若是一個鍵存在於第一個數組同時也存在於第二個數組,它的值將被第二個數組中的值替換。若是一個鍵存在於第二個數組,可是不存在於第一個數組,則會在第一個數組中建立這個元素。若是一個鍵僅存在於第一個數組,它將保持不變。若是傳遞了多個替換數組,它們將被按順序依次處理,後面的數組將覆蓋以前的值。
1四、使用傳遞的數組替換第一個數組的元素——array_replace
用法:array_replace(array1,array2,......)函數使用後面數組元素的值替換第一個 array 數組的值。若是一個鍵存在於第一個數組同時也存在於第二個數組,它的值將被第二個數組中的值替換。若是一個鍵存在於第二個數組,可是不存在於第一個數組,則會在第一個數組中建立這個元素。若是一個鍵僅存在於第一個數組,它將保持不變。若是傳遞了多個替換數組,它們將被按順序依次處理,後面的數組將覆蓋以前的值。
$base = array('citrus' => array( "orange") , 'berries' => array("blackberry", "raspberry"), );
$replacements = array('citrus' => array('pineapple'), 'berries' => array('blueberry'));
$basket = array_replace_recursive($base, $replacements);
print_r($basket);
$basket = array_replace($base, $replacements);
print_r($basket);
結果:Array ( [citrus] => Array ( [0] => pineapple ) [berries] => Array ( [0] => blueberry [1] => raspberry ) )
Array([citrus] => Array ( [0] => pineapple ) [berries] => Array ( [0] => blueberry ) )
1五、返回一個單元順序相反的數組——array_reverse
用法:array_reverse($array,<參數>)參數TRUE爲保留原來的鍵名
$input = array("php", 4.0, array("green", "red"),'a'=>'b');
var_dump(array_reverse($input));
var_dump(array_reverse($input, TRUE));
結果:array(4) { ["a"]=> string(1) "b" [0]=> array(2) { [0]=> string(5) "green" [1]=> string(3) "red" } [1]=> float(4) [2]=> string(3) "php" }
array(4) { ["a"]=> string(1) "b" [2]=> array(2) { [0]=> string(5) "green" [1]=> string(3) "red" } [1]=> float(4) [0]=> string(3) "php" }
1六、在數組中搜索給定的值,若是成功則返回相應的鍵名——array_search,失敗返回FALSE
用法:array_search(mixed,$array)
$input = array(1=>"php", 2=>'java',3=>'mysql','a'=>'b');
var_dump(array_search('php',$input));
var_dump(array_search('b',$input));
結果:int(1) string(1) "a"
1七、將數組開頭的單元移出數組——array_shift 做用相似於指針
用法:array_shift(array);將 array 的第一個單元移出並做爲結果返回,將 array 的長度減一併將全部其它單元向前移動一位。全部的數字鍵名將改成從零開始計數,文字鍵名將不變。若是 array 爲空(或者不是數組),則返回 NULL
$input = array(1=>"php", 2=>'java',3=>'mysql','a'=>'b');
var_dump(array_shift($input));
var_dump($input);
結果:string(3) "php"
array(3) { [0]=> string(4) "java" [1]=> string(5) "mysql" ["a"]=> string(1) "b" }
1八、從數組中取出一段——array_slice
用法:array_slice(array,offset(int),length(int),<TRUE>),若是加上參數TRUE不會重製數組的鍵
$input = array("a", "b", "c", "d", "e");
print_r(array_slice($input, 2, -1));
print_r(array_slice($input, 2, -1, true));
結果:Array ( [0] => c [1] => d ) Array ( [2] => c [3] => d )
1九、把數組中的一部分去掉並用其它值取代 ——array_splice
array_splice($input(array),$offset(int),$length(int),$replace(array))
把 input 數組中由 offset 和 length 指定的單元去掉,若是提供了 replacement 參數,則用 replacement 數組中的單元取代。返回一個包含有被移除單元的數組。注意 input 中的數字鍵名不被保留。若是 offset 爲正,則從 input 數組中該值指定的偏移量開始移除。若是 offset 爲負,則從 input 末尾倒數該值指定的偏移量開始移除。
若是省略 length,則移除數組中從 offset 到結尾的全部部分。若是指定了 length 而且爲正值,則移除這麼多單元。若是指定了 length 而且爲負值,則移除從 offset 到數組末尾倒數 length 爲止中間全部的單元。小竅門:當給出了 replacement 時要移除從 offset 到數組末尾全部單元時,用 count($input) 做爲 length。
若是給出了 replacement 數組,則被移除的單元被此數組中的單元替代。若是 offset 和 length 的組合結果是不會移除任何值,則 replacement 數組中的單元將被插入到 offset 指定的位置。注意替換數組中的鍵名不保留。若是用來替換的值只是一個單元,那麼不須要給它加上 array(),除非該單元自己就是一個數組。
<?php
$input1 = array("red", "green", "blue", "yellow");
array_splice($input1, 2);
var_dump($input1);
$input2 = array("red", "green", "blue", "yellow");
array_splice($input2, 1, -1);
var_dump($input2);
$input3 = array("red", "green", "blue", "yellow");
array_splice($input3, 1, count($input3), "orange");
var_dump($input3);
$input4 = array("red", "green", "blue", "yellow");
array_splice($input4, -1, 1, array("black", "maroon"));
var_dump($input4);
$input5 = array("red", "green", "blue", "yellow");
array_splice($input5, 3, 0, "purple");
var_dump($input5);
array(2) { [0]=> string(3) "red" [1]=> string(5) "green" }
array(2) { [0]=> string(3) "red" [1]=> string(6) "yellow" }
array(2) { [0]=> string(3) "red" [1]=> string(6) "orange" }
array(5) { [0]=> string(3) "red" [1]=> string(5) "green" [2]=> string(4) "blue" [3]=> string(5) "black" [4]=> string(6) "maroon" }
array(5) { [0]=> string(3) "red" [1]=> string(5) "green" [2]=> string(4) "blue" [3]=> string(6) "purple" [4]=> string(6) "yellow" }
20、計算數組中全部值的和——array_sum
用法:array_num(array)(number)
<?php
$a = array(2, 4, 6, 8);
$b = array("a" => 1.2, "b" => 2.3, "c" => 3.4);
var_dump(array_sum($a));
var_dump(array_sum($b));
結果:int(20) float(6.9)