array_map() 第一個參數爲回調函數,第二個爲數組。將數組中的每個元素用回調函數處理。可以傳遞多個數組。處理過的元素返回生成新數組。
array_walk() 第二個參數爲回調函數,可傳遞多個自定義參數。對數組中的每個成員應用回調函數,成功返回真失敗返回假。回調函數傳參是鍵值-鍵名的形式。
array_walk_recursive() 功能與array_walk()相同,只不過 通過遞歸的方式對數組進行遍歷,因此可以操作二維數組。
compact() 將多個變量轉化爲數組。可直接接受變量名字符串,也可接受包含變量名字符串的數組。
extract() 將數組生成變量。返回生成的變量數。默認若生成的變量已存在,則進行覆蓋。可增加參數改變。
in_array() 判斷元素是否在數組中。返回bool值。默認不檢測類型,可增加第三個參數TRUE使其檢測類型。
array_merge() 把一個或多個數組合併爲一個數組。重名則前面的被覆蓋。
array_merge_recursive() 作用同上,在有重複項時,合併生成二維數組。
array_change_key_case() 更改鍵名的大小寫並返回,原數組不變。參數:CASE_UPPER、CASE_LOWER
range() 生成包含指定範圍的數組,可以指定步長。與python中的range()一樣。
array_count_values() 統計數組中所有值出現的次數。統計結果以數組形式返回。
array_pad() 用值將數組填補到指定長度。類似於str_pad()。第二個參數可以是負數,表示從開頭填充。
array_product() 將數組中的鍵值相乘,返回數值(int或float)。當然使用循環也可以。
示例:
array_walk()
include("dump.php");
$arr3 = array("張三"=>"2200","李四"=>"655","王五"=>"1233","趙六"=>"1754");
if(array_walk($arr3,func_walk,800)){
echo "加工資成功!<br/>";
dump($arr3);
}
function func_walk(&$v,$k,$c=''){ //注意這裏爲傳址,否則無法對局部變量進行修改
if($v<1000){ //傳進來的是 鍵值-鍵名 的形式,與平常的不同
$v+=$c;
}
}
結果:
加工資成功!
Array
(
[張三] => 2200
[李四] => 1455
[王五] => 1233
[趙六] => 1754
)
array_walk_recursive()
$arr5 = array(
array("uname"=>"張三","money"=>"100"),
array("uname"=>"李四","money"=>"200"),
array("uname"=>"王五","money"=>"300"),
array("uname"=>"趙六","money"=>"400"),
);
function func(&$v,$k){
if($k=='money' && $v<300){
$v+=1000;
}
}
array_walk_recursive($arr5,'func');
dump($arr5);
結果:
Array
(
[0] => Array
(
[uname] => 張三
[money] => 1100
)
[1] => Array
(
[uname] => 李四
[money] => 1200
)
[2] => Array
(
[uname] => 王五
[money] => 300
)
[3] => Array
(
[uname] => 趙六
[money] => 400
)
)
由於是二維數組,此時如果任然使用array_walk()的話,操作就會失敗。
compact()
include('dump.php');
$name = "張三";
$age = "27";
$sex = "man";
$person = compact('name','age','sex');
$personArr = array('name','age','sex');
dump($person);
dump(compact($personArr));
結果:
Array
(
[name] => 張三
[age] => 27
[sex] => man
)
Array
(
[name] => 張三
[age] => 27
[sex] => man
)
extract() EXTR_SKIP EXTR_OVERWRITE EXTR_IF_EXISTS
EXTR_PREFIX_IF_EXISTS EXTR_PREFIX_ALL
EXTR_PREFIX_SAME EXTR_REFS(引用變量地址)……
$gmail = array("weburl"=>"http://gmail.com.hk/","webname"=>"gmail","Inbox"=>"51_unread","無鍵值A","無鍵值B");
var_dump(extract($gmail,EXTR_PREFIX_ALL,'prefix'));
echo $prefix_weburl."<br/>".$prefix_webname."<br/>".$prefix_Inbox."<br/>";
echo $prefix_0."<br/>".$prefix_1."<br/>";
結果:
int 5
http://gmail.com.hk/
gmail
51_unread
無鍵值A
無鍵值B
而如果前綴改爲空字符串,仍然可以使用:
var_dump(extract($gmail,EXTR_PREFIX_ALL,''));
echo $_0;
結果:
int 5
無鍵值A
array_merge()
include("dump.php");
$gmail = array("weburl_gmail"=>"http://gmail.com.hk/","webname"=>"gmail","Inbox"=>"51_unread");
$qqmail = array("weburl_qqmail"=>"http://mail.qq.com/","webname"=>"qqmail","Inbox"=>"3_unread");
dump(array_merge($gmail,$qqmail))
結果:
Array
(
[weburl_gmail] => http://gmail.com.hk/
[webname] => qqmail
[Inbox] => 3_unread
[weburl_qqmail] => http://mail.qq.com/
)
array_change_key_case()
$qqmail = array("weburl_qqmail"=>"http://mail.qq.com/","webname"=>"qqmail","Inbox"=>"3_unread");
dump(array_merge($gmail,$qqmail));
$upper = array_change_key_case($qqmail,CASE_UPPER);
dump($upper);
dump(array_change_key_case($upper,CASE_LOWER));
結果:
Array
(
[weburl_gmail] => http://gmail.com.hk/
[webname] => qqmail
[Inbox] => 3_unread
[weburl_qqmail] => http://mail.qq.com/
)
Array
(
[WEBURL_QQMAIL] => http://mail.qq.com/
[WEBNAME] => qqmail
[INBOX] => 3_unread
)
Array
(
[weburl_qqmail] => http://mail.qq.com/
[webname] => qqmail
[inbox] => 3_unread
)
array_count_values()
include("dump.php");
$arr = array("a","b","c","a","b","b","d");
dump(array_count_values($arr));
結果:
Array
(
[a] => 2
[b] => 3
[c] => 1
[d] => 1
)
str_pad()和array_pad()
$arr = array("x","y","z");
$str = "123";
echo str_pad($str,20,"M",STR_PAD_BOTH);
dump(array_pad($arr,-7,"9"));
結果:
MMMMMMMM123MMMMMMMMM
Array
(
[0] => 9
[1] => 9
[2] => 9
[3] => 9
[4] => x
[5] => y
[6] => z
)
array_product()
$arr1 = array(2,4,5,62,4,0.5);
dump(array_product($arr1));
結果:
float 4960
以上均爲個人理解,初學php,如果有不對的地方,歡迎大家指正!