array_filter

PHP用foreach来表达array_walk/array_filter/array_map/array_reduce

久未见 提交于 2019-12-09 17:32:14
PHP装逼玩函数式(回调匿名函数): array_walk/array_filter/array_map/array_reduce: 遍历数组,回调函数.遍历一次,回调一次. 这些逻辑其实都可以用foreach来表达,而且更容易理解. array_walk 相当于foreach: $arr = ['Client'=>'jQuery','Server'=>'PHP']; array_walk($arr, function($v, $k) { echo "键:$k 值:$v\n"; }); 比如去除数组$arr元素的前后空白: array_walk($arr, function(&$v) { $v = trim($v); }); foreach($arr as &$v) { $v = trim($v); } array_filter : 用回调函数过滤数组中的单元,返回过滤后的数组 var_export( array_filter([1, 2, 3], function($v) { return $v > 1; }) ); 和 foreach([1, 2, 3] as $k => $v) { if($v > 1) { $tmp[$k] = $v; } } var_export($tmp); 都输出: array ( 1 => 2, 2 => 3, ) PHP数组映射化简

php数组array_filter()函数和array_slice()函数

北慕城南 提交于 2019-12-07 12:20:38
<?php /* array_filter()用回调函数过滤数组中的单元 array_filter(array,function) 参数描述:如果自定义过滤函数返回 true,则被操作的数组的当前值就会被包含在返回的结果数组中, 并将结果组成一个新的数组,如果原数组是一个关联数组,键名保持不变。 */ function delEmpty( $val ) { if ( $val === "" || $val === "php" ) { //当数组中存在空值和php值时,换回false,也就是去掉该数组中的空值和php值 return false; } return true; } $input_array = array ( 'A' => "Java" , 'B' =>false, 'B1' =>true, 'C' => "" , 'D' => " " , 'E' =>null, 'G' =>0, 'G1' => '0' , 'H' => 'php' ); print_r( array_filter ( $input_array )); print_r( array_filter ( $input_array , "delEmpty" )); ?> 没有回调函数的运行结果: 可以看出,false,null,和真正的''空白以及0都被过滤了,而且数组的下标没有改变.