如何使用PHP轻松地将数组中的每个项目相乘?

Hen*_*ryz 13 php arrays

我有一个名为的数组$times.它是一个小数字列表(15,14,11,9,3,2).这些将是用户提交的,应该是几分钟.由于PHP时间在几秒钟内工作,我想将我的数组的每个元素乘以60.

我一直在玩array_walk,array_map但我不能让那些工作.

Gor*_*don 23

你可以使用array_map:

在将回调函数应用于每个元素之后,array_map()返回包含arr1的所有元素的数组.回调函数接受的参数数量应与传递给array_map()的数组数量相匹配

lambda函数用于回调的示例:

array_map(function($el) { return $el * 60; }, $input);
Run Code Online (Sandbox Code Playgroud)

PHP <5.3也是如此

array_map(create_function('$el', 'return $el * 60;'), $input);
Run Code Online (Sandbox Code Playgroud)

或者bcmul用于回调

array_map('bcmul', $input, array_fill(0, count($input), 60));
Run Code Online (Sandbox Code Playgroud)

但是,使用它也没有任何问题foreach.


dki*_*zer 7

只需使用语句迭代数组foreach并乘以:

foreach ($times as $value) {

  $new_times[] = $value * 60;

}
Run Code Online (Sandbox Code Playgroud)


lam*_*mas 6

在您的情况下,您可能希望使用foreach以简化:

foreach( $times as &$val ){ $val *= 60; }
Run Code Online (Sandbox Code Playgroud)

我假设您的数组的值是您想要乘法的值,而不是键.由于上面的解决方案使用引用,它也会改变你的原始数组 - 但正如你array_map之前的目标,我认为你想要那样.

上面的解决方案可能更容易理解,并且最有可能比使用array_map更快(显然)必须为每个元素调用一个函数.我只使用array_map来处理更复杂的事情,例如高级排序算法等等,但绝对不会像这样简单.