1. 程式人生 > >php陣列元素的遍歷與回撥處理

php陣列元素的遍歷與回撥處理

/**
* 陣列函式__回撥處理
* 1.array_filter($arr, $callback):用回撥過濾陣列
* 2.array_walk(&$arr, $callback($val,$key,$data),$data的值)
*/

 

/**
* 一、array_filter()
* 1.功能: 回撥處理每個元素,僅返回結果為true的元素,預設僅對值處理
* 2.引數: $arr(必),$callback(選),FLAG)
*      常量引數1:ARRAY_FILTER_USE_KEY,只處理鍵名
*      常量引數2:ARRAY_FILTER_USE_BOTH,鍵名與值都要處理
* 3.返回: 僅儲存過濾過的新元素的陣列
* 4.場景: 過濾非法資料
*/

//1.array_filter($arr, $callback):用回撥過濾陣列 ,該函式把輸入陣列中的每個鍵值傳給回撥函式。如果回撥函式返回 true,則把輸入陣列中的當前鍵值返回結果陣列中。陣列鍵名保持不變。
//	返回過濾的陣列。
$arr1 = [5, 0, '',20, null, 88, false, 'php'];
echo '原始陣列為'.'<pre>'.var_export($arr1,true).'<br>';

//1.不傳入回撥,過濾陣列中為false的元素
//返回陣列中元素為true的值(自動轉換),'',0,null,false,全部轉為false
//被轉為false型別的元素不會出現在結果陣列中,即自動過濾掉了
$arr2 =array_filter($arr1);
echo '新陣列'.'<pre>'.var_export($arr2,true).'<hr>';

//2.傳入回撥,預設將陣列的值依次傳入回撥處理
$arr3 = ['html','css','javascript'];
$arr4 = array_filter($arr3,function($value){
     return ($value!=='css');                       //!== 不會進行型別轉換
});
echo '新陣列'.'<pre>'.var_export($arr4,true).'<hr>';


/**
* 二、array_walk(&$arr, $callback,附加值(userdata))
* 1.功能: 對陣列中的每個元素的鍵值對進行處理
* 2.引數: 原生支援鍵值處理,不用常量識別符號,附加引數可以擴充套件功能
* 3.返回: 可以使用引用傳參直接修改原陣列
* 4.場景: 用在對元素進行一些簡單業務邏輯的場合
* **典型情況下 myfunction 接受兩個引數。array 引數的值作為第一個,鍵名作為第二個。
* **如果提供了可選引數 userdata ,將被作為第三個引數傳遞給回撥函式。
*/

 

//1.可自定義的遍歷陣列
$arr5 = ['name'=>'wangchu','email'=>'
[email protected]
']; array_walk($arr5,function(&$val,$key){ echo $key.'---'.$val.'<br>'; }); echo '<hr>'; //2.傳入第三個自定義引數,實現更為強大的功能 array_walk($arr5,function(&$val,$key,$name){ if($val == $name ){ exit('你沒有許可權訪問') ; //exit() 函式輸出一條訊息,並退出當前指令碼。 }else{ echo $key.'---'.$val.',mmm<br>'; } },'admin');