有一个类型的数组:
$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.
您可以使用array_map函数将回调函数(执行乘法)应用于每个数组元素:
function multiply($n) {
$factor = 0.4;
return($n * $factor);
}
$arr = array_map("multiply", $arr);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7489 次 |
| 最近记录: |