首页 > 解决方案 > PHP函数中未定义的变量?

问题描述

我创建了一个名为 multiply() 的函数,它接受一个数字数组,将每个值乘以一个数字并返回该数组:

<?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在我的情况下未定义?

标签: php

解决方案


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

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

推荐阅读