我只是想用array_walk()用ceil()圆阵列中的所有元素.但它不起作用.
代码:
$numbs = array(3, 5.5, -10.5);
array_walk($numbs, "ceil");
print_r($numbs);
Run Code Online (Sandbox Code Playgroud)
输出应为:3,6,-10
错误消息:
警告:ceil()预计在第2行给出1个参数,2
输出为:3,5.5,-10.5(与之前使用ceil()相同)
我也尝试过round().
Roc*_*mat 10
请array_map改用.
$numbs = array(3, 5.5, -10.5);
$numbs = array_map("ceil", $numbs);
print_r($numbs);
Run Code Online (Sandbox Code Playgroud)
array_walk实际上将2个参数传递给回调,并且一些内置函数不喜欢使用太多参数调用(在文档页面上有关于此的注释array_walk).这只是一个警告,但这不是一个错误.
array_walk如果要修改数组,还需要回调的第一个参数作为引用.因此,ceil()仍然会为每个元素调用,但由于它没有将值作为引用,因此它不会更新数组.
array_map 对这种情况更好.
我在使用另一个 PHP 函数时遇到了同样的问题。您可以创建“您自己的 ceil 函数”。这种情况就很容易解决:
function myCeil(&$list){
$list = ceil($list);
}
$numbs = [3, 5.5, -10.5];
array_walk($numbs, "myCeil");
// $numbs output
Array
(
[0] => 3
[1] => 6
[2] => -10
)
Run Code Online (Sandbox Code Playgroud)