array_map和array_reduce替換for循環

array_map -- 將回調函數作用到給定數組的單元上

摘錄一段PHP手冊的列子簡要說明如下:

function cube($n){
return 
$n $n $n;
}

$a = array(12345);
$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(12345);
$b array_map("myclass::myMethoed"$a);
print_r($b);
?> 


Instead, you need to do this:
(你應該做如下調用)


$a = array(12345);
$b array_map(array("myclass","myMethoed")$a);
print_r($b);
?> 


這裏有幾點可以參考的:

1,在PHP類中通過array_map函數回調內部方法時,類名稱可以使用__CLASS__常量。我們強烈推薦使用此常量,因爲不論你類如何修改,這能保證最終結果都是正確的。

2,如果回調的方法是非靜態類型,亦可通過$this僞變量指定。

3,在PHP類中的array_map函數總是不能識別self僞變量。


array_reduce — 用回調函數迭代地將數組簡化爲單一的值(常用於求和)

function rsum($v$w)
{
    
$v += $w;
    return 
$v;
}

$a = array(12345);
$b array_reduce($a"rsum");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章