我有一个名为的数组$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.
只需使用语句迭代数组foreach并乘以:
foreach ($times as $value) {
$new_times[] = $value * 60;
}
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您可能希望使用foreach以简化:
foreach( $times as &$val ){ $val *= 60; }
Run Code Online (Sandbox Code Playgroud)
我假设您的数组的值是您想要乘法的值,而不是键.由于上面的解决方案使用引用,它也会改变你的原始数组 - 但正如你array_map之前的目标,我认为你想要那样.
上面的解决方案可能更容易理解,并且最有可能比使用array_map更快(显然)必须为每个元素调用一个函数.我只使用array_map来处理更复杂的事情,例如高级排序算法等等,但绝对不会像这样简单.