5,、編輯數(shù)組值 假設(shè)在數(shù)組中的數(shù)據(jù)包含大小寫錯誤,在插入到數(shù)據(jù)庫之前,你想糾正這些錯誤,你可以使用array_map()函數(shù)給每個數(shù)組元素應(yīng)用一個回調(diào),代碼如下: 1 2 3 4 5 6 7 8 9 10 11 | function capitalize( $element )
{
$element = strtolower ( $element );
return ucwords( $element );
}
$capitals = array (
'Alabama' => 'montGoMEry' ,
'Alaska' => 'Juneau' ,
'Arizona' => 'phoeniX'
);
$capitals = array_map ( "capitalize" , $capitals );
|
6,、按鍵對數(shù)組排序 FlashCard程序常常使用各種排序,如按字母順序排序,你可以使用ksort()函數(shù)按鍵對關(guān)聯(lián)數(shù)組進(jìn)行排序,代碼如下: 1 2 3 4 5 6 | $capitals = array (
'Arizona' => 'Phoenix' ,
'Alaska' => 'Juneau' ,
'Alabama' => 'Montgomery'
);
ksort( $capitals );
|
因為數(shù)組是通過參數(shù)傳遞給ksort()函數(shù)的,意味著你不再需要將排序結(jié)果分配給另一個變量. 7,、隨機(jī)數(shù)組排序 在FlashCard程序中還涉及到另一種隨機(jī)排序技術(shù),這時你要使用shuffle()函數(shù)實現(xiàn)數(shù)組項目的隨機(jī)排序,代碼如下: 1 2 3 4 5 6 | $capitals = array (
'Arizona' => 'Phoenix' ,
'Alaska' => 'Juneau' ,
'Alabama' => 'Montgomery'
);
shuffle( $capitals );
|
如果不需要打亂數(shù)組順序,你只是想隨機(jī)選擇一個值,那么使用array_rand()函數(shù)即可. 8,、確定鍵和值是否存在 你可以使用in_array()函數(shù)確定一個數(shù)組元素是否存在,代碼如下: 1 2 3 4 5 6 7 8 9 10 11 | $capitals = array (
'Arizona' => 'Phoenix' ,
'Alaska' => 'Juneau' ,
'Alabama' => 'Montgomery'
);
if (in_array( "Juneau" , $capitals ))
{
echo "Exists!" ;
} else {
echo "Does not exist!" ;
}
|
很少有人知道這個函數(shù)也可以確定一個數(shù)組鍵是否存在,在這一點上,它和array_key_exists()函數(shù)的功能一樣,代碼如下: 1 2 3 4 5 6 7 8 9 10 11 | $capitals = array (
'Arizona' => 'Phoenix' ,
'Alaska' => NULL , //isset($capitals['Alaska'])將會返回false
'Alabama' => 'Montgomery'
);
if ( array_key_exists ( "Alaska" , $capitals ))
{
echo "Key exists!" ;
} else {
echo "Key does not exist!" ;
}
|
注意:in_array()有坑點,,php是弱類型語言,,如果你想判斷字符型值'1'是否存在于含有整型值1的數(shù)組中,,請?zhí)砑拥谌齻€參數(shù)true加快判斷速度,!否則php會認(rèn)為字符型和整型的鍵是相同的返回true,。 另外,array_key_exists()在某些情況下可以使用isset($capitals['Alaska'])代替效率更高,,但是如果該鍵對應(yīng)的值為NULL,,isset并不會返回false,而array_key_exists僅僅檢查鍵是否存在不會判斷值是否為NULL因而返回true,。
|