例子1
<?php
$arr = ['apple','boy','cat','dog',];
array_walk($arr,function($val, $key, $addtion){
echo "{$key}:{$val}{$addtion}";
},'!');
上例中,三个参数都用齐了;需要注意的是匿名函数中的两个参数,第一个参数是数组的值,第二个参数是数组的键。
输出结果:
0:apple!1:boy!2:cat!3:dog!
例子2
<?php
$arr = ['apple','boy','cat','dog',];
$addtion = '!';
array_walk($arr,function($val, $key) use ($addtion){
echo "{$key}:{$val}{$addtion}";
});
在例子2中使用use将外部参数往闭包里传递,将会得到与例子1相同的结果。
例子3
<?php
$arr = ['apple','boy','cat','dog',];
var_dump($arr);
array_walk($arr,function(&$val){
$val = $val.'-'.$val;
});
var_dump($arr);
在例子3中,使用引用传值的方式改变数组的值。
输出结果:
E:\projects\test\closure.php:20:
array (size=4)
0 => string 'apple' (length=5)
1 => string 'boy' (length=3)
2 => string 'cat' (length=3)
3 => string 'dog' (length=3)
E:\projects\test\closure.php:24:
array (size=4)
0 => string 'apple-apple' (length=11)
1 => string 'boy-boy' (length=7)
2 => string 'cat-cat' (length=7)
3 => string 'dog-dog' (length=7)