使用 array_map 函数将数组中的每个值相乘

Multiply each value in array using array_map function

我正在尝试将 array_module_rate 数组中的每个值相乘。

结果应该是:

我该怎么做?

$array_module_rate = array(
  '5',
  '3',
  '4'
}

$global_course = 5;

array_map(function($cal) {
  return $cal * $global_course;
}, $array_module_rate);
$array_module_rate = array(
  '5',
  '3',
  '4'
}

$global_course = 5;

foreach($array_module_rate as $key=>$value){
   $array_module_rate[$key]=$global_course* $value;
}

您可以使用 foreach 循环

使用闭包在 array_map 回调中发送额外的参数。

$array_module_rate = array(
  '5',
  '3',
  '4'
);

$global_course = 5;

array_map(function($cal) use($global_course) {
  return $cal * $global_course;
}, $array_module_rate);

如果要修改原数组,可以用array_walk代替array_map。它通过引用获取数组,因此如果您也通过引用将数组元素传递给回调,您可以直接修改它。

array_walk($array_module_rate, function(&$cal) use ($global_course) {
   $cal *= $global_course;
});

请注意,您需要将 $global_course 传递到带有 use 的回调中,否则 it won't be available in that scope

现代 PHP 具有“箭头函数”,它允许您在匿名函数体内访问全局范围的变量。这使您可以使用简洁的函数式方法将每个元素简明地乘以 $global_course 因子。

代码:(Demo)

var_export(
    array_map(fn($v) => $v * $global_course, $array_module_rate)
);

输出:

array (
  0 => 25,
  1 => 15,
  2 => 20,
)