您现在的位置是:网站首页 > 心得笔记

php函数作用于数组中的每个值

盛悦2022-04-19549人围观
简介本篇介绍array_map()、array_filter()和array_walk()......

1、array_map(myfunction, array1)将自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。


eg1:
function myfunction($v)
{
return $v * $v;
}
$array = [1,2,3,4,5];
var_dump(array_map('myfunction', $array));//[1,4,9,16,25]

eg2:

function myfunction1($v1, $v2)
{
	if ($v1 == $v2) {
		return 'same';
	}

	return 'different';
}

$array1 = ['dog', 'cat', 'milk'];
$array2 = ['cow', 'cat', 'rat'];

var_dump(array_map('myfunction1', $array1, $array2));//['different', 'smae', 'different']


eg3:
function myfunction2($v1, $v2)
{
	if ($v1 == $v2) {
		return 'same';
	}

	//return 'different';
}

$array1 = ['dog', 'cat', 'milk'];
$array2 = ['cow', 'cat', 'rat'];

var_dump(array_map('myfunction1', $array1, $array2));//[NULL, 'smae', NULL]


参考文档:https://www.w3school.com.cn/php/func_array_map.asp


2、array_filter()该函数把输入数组中的每个键值传给回调函数。如果回调函数返回 true,则把输入数组中的当前键值返回结果数组中。数组键名保持不变。

$arr = ['a','b',1,2,3];
$new_arr = array_filter($arr,function($val){
    return is_numeric($val);
});
var_dump($new_arr);
//返回结果
//array (size=3)
//  2 => int 1
//  3 => int 2
//  4 => int 3


3、array_walk(array, myfunction, userdata)对数组中的每个元素应用回调函数。如果成功则返回 TRUE,否则返回 FALSE。典型情况下 myfunction 接受两个参数。array 参数的值作为第一个,键名作为第二个。如果提供了可选参数 userdata ,将被作为第三个参数传递给回调函数。


eg1:
function myfunction($v, $k, $p)
{
echo "$k $p $v";
}
$array = ['a' => 'red', 'b' => 'blue', 'c' => 'green'];
array_walk($array, 'myfunction', 'has the value');
//a has the value red  
//b has the value blue 
//c has the value green
dd($array);//['a' => 'red', 'b' => 'blue', 'c' => 'green']
eg2:
$array = ['a' => 'red', 'b' => 'blue', 'c' => 'green'];
array_walk($array, function(&$v, $k)
{
    if ($v == 'red') {
        $v  = 'yellow';
    }
});
dd($array);//['a' => 'yellow', 'b' => 'blue', 'c' => 'green']

参考文档:https://www.w3school.com.cn/php/func_array_walk.asp

上一篇:SQL的执行顺序

下一篇:单例模式