$origarray1 = array(2.4, 2.6, 3.5);
$origarray2 = array(2.4, 2.6, 3.5);
print_r(array_map('floor', $origarray1)); //$origarray1 stays the same
//changes $origarray2
function callback_array_walk(&$v, $k) { $v = floor($v); }
array_walk($origarray2, callback_array_walk(&$v, $k));
print_r($origarray2);
//this is a more proper use of array_walk
function callback_array_walk2($v, $k) { echo "$k => $v", "\n"; }
array_walk($origarray1, callback_array_walk2($v, $k));
//array_map accepts several arrays
function callback_arraymap($a, $b) { return $a * $b; }
print_r(array_map(callback_arraymap($a, $b), $origarray1, $origarray2));
//select only elements that are > 2.5
function callback_array_filter($a) { return $a > 2.5; }
print_r(array_filter($origarray1,callback_array_filter($a)));
我在这里遇到错误
array_walk()[function.array-walk]:函数名的语法错误....
我误解了这三种类型(使用,呼叫,传递)?
答案 0 :(得分:1)
尝试将回调函数作为字符串传递给array_walk
,不带任何参数:
function callback_array_walk(&$v, $k) { $v = floor($v); }
array_walk($origarray2, 'callback_array_walk');
^^^^^^^^^^^^^^^^^^^^^
类似地,array_map
和array_filter
函数将回调函数作为字符串传递。
答案 1 :(得分:1)
您只需将回调作为函数的名称传递:
array_walk($origarray2, 'callback_array_walk');