array_map -- 將回調函數作用到給定數組的單元上
摘錄一段PHP手冊的列子簡要說明如下:
function cube($n){
return $n * $n * $n;
}
$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($b);
?>
那麼,如果你是在一個PHP類中通過array_map函數回調內部方法又該如何做呢?
同樣,我們可以在PHP手冊中找到一段用戶添加的說明:
If you need to call a static method from array_map, this will NOT work:
(如果你想在array_map函數中回調一個靜態方法,那麼下面的做法是錯誤的)
$a = array(1, 2, 3, 4, 5);
$b = array_map("myclass::myMethoed", $a);
print_r($b);
?>
Instead, you need to do this:
(你應該做如下調用)
$a = array(1, 2, 3, 4, 5);
$b = array_map(array("myclass","myMethoed"), $a);
print_r($b);
?>
這裏有幾點可以參考的:
1,在PHP類中通過array_map函數回調內部方法時,類名稱可以使用__CLASS__常量。我們強烈推薦使用此常量,因爲不論你類如何修改,這能保證最終結果都是正確的。
2,如果回調的方法是非靜態類型,亦可通過$this僞變量指定。
3,在PHP類中的array_map函數總是不能識別self僞變量。
array_reduce — 用回調函數迭代地將數組簡化爲單一的值(常用於求和)
{
$v += $w;
return $v;
}
$a = array(1, 2, 3, 4, 5);
$b = array_reduce($a, "rsum");