平時經常遇到這三個函數,每次遇到就查資料,用的時候又忘記了,今天絕對把它寫下來供下次翻閱。
首先看一下這三個函數的文檔
array array_filter ( array $input [, callback $callback ] )、array array_map ( callback $callback , array $arr1 [, array $... ] )bool array_walk ( array &$array , callback $funcname [, mixed $userdata ] )
array_filter返回的是一個數組,依次將 input 數組中的每個值傳遞到callback 函數。如果 callback 函數返回TRUE,則 input數組的當前值會被包含在返回的結果數組中。數組的鍵名保留不變
<?php$arr=array(1,2,3,4,5,6);function filter($var){ if($var%2==0) return true;}$data=array_filter($arr,"filter");$data=array(2,4,6);?>array_map() 返回一個數組,該數組包含了 arr1 中的所有單元經過callback 作用過之后的單元。callback接受的參數數目應該和傳遞給array_map() 函數的數組數目一致。
<?php$arr1=array('linux','Php','java');array_map('strtoupper',$arr1);?>
array_walk() 不會受到 array內部數組指針的影響。array_walk()會遍歷整個數組而不管指針的位置。
用戶不應在回調函數中改變該數組本身。例如增加/刪除單元,unset 單元等等。如果 array_walk()作用的數組改變了,則此函數的的行為未經定義,且不可預期。注意回調函數接收的前兩個參數第一個是值,第二個是鍵值,如果有第三個參數,則數組所有的值都共用這個參數
<?php?function exchange($val,$key){ echo $val; echo $key; }$arr2=array('a'=>'linux','b'=>'php','c'=>'java','d'=>'MySQL');array_walk($arr2,'exchange');>
新聞熱點
疑難解答