Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:不错, 就是案例不是太好, 但目前你们暂时可能想不到更合适的可以理解
返回的是新数组,原数组不变
它的作用是每次传入一个元素到回调函数内进行判断,把返回true的保存到新数组中
新数组和原数组的数组长度可能不一样
array_filter(array,func,[flag])
参数 | 描述 |
---|---|
array | 必须,规定使用的数组 |
func | 必须,用于过滤数组的回调函数,返回值是布尔型 |
flag | 可选,决定func接收的参数形式 |
ARRAY_FILTER_USE_KEY 接受键名作为的唯一参数 | |
ARRAY_FILTER_USE_BOTH 同时接受键名和键值 |
$array=['aes1','aes2','a'=>'a3','y2'=>'aes4','a5','aes'=>'ab6'];
//如果键值内容包含指定的字符串返回true
function func($var){
if (strpos($var,'aes')===false):
return false;
else:
return true;
endif;
}
$arr=array_filter($array,"func");
printf('<pre>%s</pre><hr>',print_r($arr,true));
//只对键名进行过滤
$arr=array_filter($array,"func",ARRAY_FILTER_USE_KEY);
printf('<pre>%s</pre><hr>',print_r($arr,true));
-------------------------------
//输出结果
Array
(
[0] => aes1
[1] => aes2
[y2] => aes4
)
Array
(
[aes] => ab6
)
返回的是新数组,原数组不变
它的作用是每次传入一个元素到回调函数内,把回调函数的返回值存入到新数组内,可以多个数组同时传入
新数组和原数组的数组长度应该一样
array_map( func, array1,[array2...])
参数 | 描述 |
---|---|
func |
必须,用于接收数组的回调函数,可以自定义返回值,返回值会存入新数组 |
array1 |
必须,规定使用的数组 |
array... |
可选,规定使用的数组 |
$array1=['孙悟空','猪八戒','沙和尚','唐生'];
$array2=['金箍棒','九齿钉耙','月牙铲','九锡禅杖'];
function func($a,$b)
{
return '<font color="red">'.$a.'</font>使用的兵器是<font color="gray">'.$b.'</font>';
}
$arr=array_map("func",$array1,$array2);
printf('<pre>%s</pre><hr>',print_r($arr,true));
-------------------------------
//输出结果
Array
(
[0] => 孙悟空使用的兵器是金箍棒
[1] => 猪八戒使用的兵器是九齿钉耙
[2] => 沙和尚使用的兵器是月牙铲
[3] => 唐生使用的兵器是九锡禅杖
)
返回布尔值,如果要改变数组元素的值,回调函数第一个参数必须是引用
arrary_walk 的回调函数能够接收数组的键名
array_walk(array,func,[data])
参数 | 描述 |
---|---|
array |
必须,规定使用的数组 |
func |
必须,用于接收数组元素的回调函数,参数1键值,参数2键名,参数3data |
data |
可选,传入func的第三个参数 |
$array = [
'a' => ['title' => '推荐', 'code' => 1],
'b' => ['title' => '搞笑', 'code' => 1],
'c' => ['title' => '奇闻', 'code' => 2]
];
//修改数组键名为'a'和'c'的元素内'code'的值
function func(&$a, $b, $c)
{
switch ($b):
case 'a';
$a['code'] = $c;
break;
case 'c';
$a['code'] = 123;
endswitch;
}
array_walk($array, "func", 789);
printf('<pre>%s</pre><hr>', print_r($array, true));
-------------------------------
//输出结果
Array
(
[a] => Array
(
[title] => 推荐
[code] => 789
)
[b] => Array
(
[title] => 搞笑
[code] => 1
)
[c] => Array
(
[title] => 奇闻
[code] => 123
)
)
发送数组中的值到用户自定义函数,并返回一个字符串
如果数组是空的或者初始值未传递,该函数返回 NULL
array_reduce(array,func,[data])
参数 | 描述 |
---|---|
array |
必需,规定数组 |
func |
必需,规定函数的名称,参数1,首次调用可接收int的值,之后接收函数自身返回值,参数2,数组的键值 |
data |
可选,规定发送到函数处理的第一个值 |
$array = ['张三','李四','王五','豆豆','杨杨','小花','小猪'];
function func($a, $b)
{
global $int;
$int++;
return $a.$int.'.'.$b.'<br>';
}
$arr=array_reduce($array, "func");
printf('<pre>%s</pre><hr>', print_r($arr, true));
-------------------------------
//输出结果
1.张三
2.李四
3.王五
4.豆豆
5.杨杨
6.小花
7.小猪