辛星淺析array_walk()和array_map()的聯絡和區別
阿新 • • 發佈:2019-01-24
對於這兩個函式的具體使用方式,我們先來看一下吧,首先是array_walk,程式碼如下:
<?php
$arr = array(2,4,5,6,7);
function xin(&$val,$key){
$val = $val*$val;
}
array_walk($arr, "xin");
var_dump($arr);
其輸出內容如下:
array (size=5)
0 => int 4
1 => int 16
2 => int 25
3 => int 36
4 => int 49
而對於array_map,我們也來一個範例吧:
其輸出內容如下:<?php function xin($a,$b){ return $a*$b; } $arr = array(2,3,4,5); $brr = array(5,6,7,8); $crr = array_map("xin",$arr,$brr); var_dump($crr);
array (size=4)
0 => int 10
1 => int 18
2 => int 28
3 => int 40
我們可以發現,對於諸如遍歷陣列來說,這兩個函式都可以實現,但是通常來說,它們的側重點不同:
(1)array_map可以同時遍歷n個數組,而array_walk則通常是遍歷一個。
(2)array_map必須有一個返回值,因為它的返回值需要構成新陣列。但是array_walk則通常沒有必要,因為它的通常用途是改變原來的資料。
(3)array_map通常會有一個數據的作用,但是array_walk則不建議對資料進行刪除和增加,只建議進行值的修改。
當然,它們在某些情況下可以實現相同的功能,二者並不是涇渭分明,而是有一定的交集。