php陣列元素的遍歷與回撥處理
阿新 • • 發佈:2018-12-02
/**
* 陣列函式__回撥處理
* 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');