PHP中的函数中未定义的变量?

时间:2018-07-30 15:59:37

标签: php

我创建了一个名为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在我的情况下未定义?

1 个答案:

答案 0 :(得分:3)

array_map中使用的函数具有不同的作用域,并且看不到其外部的变量。您需要使用use关键字并将$ factor作为附加参数传递,这样它才可用:

$newArr = array_map(function ($number) use ($factor) {
    return $number * $factor;
}, $arr);