我创建了一个名为multiple()的函数,该函数接受一个数字数组,将每个值乘以一个数字,然后返回该数组:
<?php
function multiply($arr, $factor)
{
$newArr = array_map(function ($number) {
return $number * $factor; // line 5
}, $arr);
return $newArr;
}
$array = [2,4,6];
$factor = 2;
$result = multiply($array, $factor);
print_r($result);
?>
输出:
Undefined variable: factor .... on line 5
我不明白为什么$factor
在我的情况下未定义?
答案 0 :(得分:3)
array_map中使用的函数具有不同的作用域,并且看不到其外部的变量。您需要使用use
关键字并将$ factor作为附加参数传递,这样它才可用:
$newArr = array_map(function ($number) use ($factor) {
return $number * $factor;
}, $arr);