说明:
array_walk()可以遍历数组,并使用回调函数处理每个数组元素。
语法格式:
array_walk($array, function($value,$key[,$p]){},$para)
$array:要处理的函数。
function($value,$key[,$p]){}:回调函数。
$para:参数,只能有一个。即array_walk最多只能有3个参数。$para可以是字面量,也可以是变量。如果是字面量,会自动和回调函数参数中的第3个参数对应。
例如:
//定义数组 $array = ['id'=>1001, 'name'=>'Jack', 'job'=>'lecture']; //遍历数组 array_walk($array, function($value,$key,$connector){ if($key != 'id') { echo $key,$connector,$value,'<br>'; } },'=>');
$connector 会等于 '=>'
示例源码:
遍历数组,根据分数给出成绩等级:
<?php header('content-type:text/html; charset=utf-8'); //创建数组 $array = [50,60,63,65,70,75,79,80,85,86,89,90,96]; echo '<pre>'; echo '原数组:<br>'; print_r($array);//原样输出键、值(key、value) //使用回调函数处理 echo '使用array_walk()的回调函数处理:<br>'; //输出处理后的数组 $grade_standard = ['及格'=>60, '中'=>70, '良'=>80, '优'=>90]; $grade_count = ['不及格'=>0, '及格'=>0, '中'=>0, '良'=>0, '优'=>0]; array_walk($array, function ($value,$key,$grade_standard){ if($value >= $grade_standard['优'] ){ $GLOBALS['grade_count']['优']++; } elseif($value >= $grade_standard['良'] ){ $GLOBALS['grade_count']['良']++; } elseif($value >= $grade_standard['中'] ){ $GLOBALS['grade_count']['中']++; } elseif($value >= $grade_standard['及格'] ){ $GLOBALS['grade_count']['及格']++; } else { $GLOBALS['grade_count']['不及格']++; }; },$grade_standard); echo '<pre>'; echo '成绩统计:<br>'; print_r($grade_count);
运行效果:
原数组: Array ( [0] => 50 [1] => 60 [2] => 63 [3] => 65 [4] => 70 [5] => 75 [6] => 79 [7] => 80 [8] => 85 [9] => 86 [10] => 89 [11] => 90 [12] => 96 ) 使用array_walk()的回调函数处理: 成绩统计: Array ( [不及格] => 1 [及格] => 3 [中] => 3 [良] => 4 [优] => 2 )