企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## **PHP支持回调函数的数组函数** ### **1.array_filter** > **用回调函数过滤数组中的单元** ~~~ array_filter( array $array [, callable $callback [, int $flag = 0 ]] ) ~~~ ~~~ //用法一(过滤等值为false的元素): $arr = [0, 1, 2, false, '', null, "0"]; $arr = array_filter($arr); print_r($arr); // Array ( [1] => 1 [2] => 2 ) //用法二(按照回调函数设置的规则进行过滤): $arr = [0, 1, 2, false, '', null, "0"]; $arr = array_filter($arr, function ($val) { if ($val === 0 || $val != false) { return true; } else { false; } }); print_r($arr); // Array ( [0] => 0 [1] => 1 [2] => 2 ) ~~~ ### **2.array_map** > **为数组的每个元素应用回调函数** ~~~ array_map(myfunction,array1,array2,array3...) ~~~ 该函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。 可以传递多个数组,回调函数接受的参数数目应该和传递给 array\_map() 函数的数组数目一致。 ~~~ $arr1 = [1,2,3,4,5]; $arr2 = [6,7,8,9,10]; //函数写前面,数组参数写后面 $new_arr = array_map(function($val1,$val2){ return $val1 + $val2; },$arr1,$arr2); var_dump($new_arr); //返回结果 //array (size=5) // 0 => int 7 // 1 => int 9 // 2 => int 11 // 3 => int 13 // 4 => int 15 ~~~ ### **3.array_walk** > **使用用户自定义函数对数组中的每个元素做回调处理** ~~~ array_walk(array,myfunction,parameter...) ~~~ ~~~ //将数组中的元素用于某种操作 $arr = ['a','b','c']; array_walk($arr,function($val,$key){ echo "{$key} is {$val} <br/>"; }); //返回结果 //0 is a //1 is b //2 is c //改变数组中的值,传参的时候使用引用 array_walk($arr,function(&$val,$key){ $val .= $val; }); var_dump($arr); //array (size=3) // 0 => string 'aa' (length=2) // 1 => string 'bb' (length=2) // 2 => string 'cc' (length=2) ~~~ ## 总结 * array\_filter() 重点在于过滤(而不是新增)某个元素,当你处理到一个元素时,返回过滤后的数组 * array\_map() 重点在于遍历一个数组或多个数组的元素,返回一个新的数组 * array\_walk() 重点在于遍历数组进行某种操作 * array\_filter() 和 array\_walk()对一个数组进行操作,数组参数在前,函数参数在后 * array\_map() 可以处理多个数组,因此函数参数在前,数组参数在后,可以根据实际情况放入多个数组参数