<?php /** * 使用回调函数来处理数组 */ header('Content-Type:text/html; charset=UTF-8'); //1、array_filter($arr,function(){})函数:将每个值取出,传入回调函数,进行处理,返回结果为true的元素 $array = [1,0,4,18,'',2,2,6,18,33,'',null]; echo '<pre>'; //1.1 用于处理掉数组中的空元素/0元素/null元素 $res1 = array_filter($array,function ($value){ return $value; }); print_r($res1); //1.2 用于删除指定的值,如删除数组中等于2的元素,并将键值重置(使用array_values()函数重置键值) $res2 = array_filter($array,function ($val){ if ($val == 2){ return false; }else{ return $val; } }); print_r(array_values($res2)); //2、array_walk($arr,function($value,$key){})函数:将每个键值对出入到回调函数中处理,返回处理结果为true的元素 //2.1 用于为每个值添加后缀 $suffix = 'www.php.cn'; array_walk($array,function ($value,$key,$suffix){ echo $key.'=>'.$value.$suffix.'<br>'; },$suffix); //2.2 用于过滤掉数组中符合条件的元素,并将结果中的键值对格式化输出 $connector = '----'; array_walk($array,function ($value,$key,$connector){ if ($value == 2){ return false; }else{ echo $key.$connector.$value.'<br>'; } },$connector); //3、array_map(function($val1[,$val2...]){},$arr1[,$arr2,$arr3...])函数:对一个或多个数组进行回调处理 //3.1 处理单数组 $age = [13,45,15,55,32]; $res3 = array_map(function ($value){ if ($value<18){ return '<span style="color: red">未成年</span>'; }else{ return $value; } },$age); print_r($res3); // 3.2 处理双数组 $key = ['id','name','email','sex']; $value =['1001','kiki','kiki@php,cn','female']; //过滤敏感元素sex,并拼接两个数组 $res4 = array_map(function ($key,$value){ if ($key != 'sex'){ return $key.'---'.$value.'<br>'; }else{ return false; } },$key,$value); print_r(array_filter(array_values($res4)));