在PHP中将数组乘以/除以$ var的最佳方法

Z. *_*tev 5 php arrays

有一个类型的数组:

$arr = array(23,4,13,50,231,532,3);

$factor = 0.4;
Run Code Online (Sandbox Code Playgroud)

我需要生成一个新数组,其中所有值$arr都乘以/除以$factor.我知道foreach方法.试想,必须有一个更优雅的方法.

Tom*_*lak 12

PHP 5.3及更高版本:

$arr = array(23,4,13,50,231,532,3);

$arr_mod = array_map( function($val) { return $val * 0.4; }, $arr);
Run Code Online (Sandbox Code Playgroud)

要动态传递因子,请执行以下操作:

$arr_mod = array_map( 
  function($val, $factor) { return $val * $factor; }, 
  $arr,
  array_fill(0, count($arr), 0.4)
);
Run Code Online (Sandbox Code Playgroud)

正如文档所说:

回调函数接受的参数数量应该与传递给的数组的数量相匹配array_map().

在这个简单的例子中,它没有多大意义,但它使您能够在其他地方独立定义回调,而不需要任何硬编码值.

回调将从您传递给array_map()参数的每个数组中接收相应的值,因此甚至可以考虑将不同的因子应用于每个值$arr.


cod*_*ict 5

您可以使用array_map函数将回调函数(执行乘法)应用于每个数组元素:

function multiply($n) {
        $factor = 0.4;
        return($n * $factor);
}

$arr = array_map("multiply", $arr);
Run Code Online (Sandbox Code Playgroud)

Ideone链接