1. 程式人生 > >辛星淺析array_walk()和array_map()的聯絡和區別

辛星淺析array_walk()和array_map()的聯絡和區別

    對於這兩個函式的具體使用方式,我們先來看一下吧,首先是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則不建議對資料進行刪除和增加,只建議進行值的修改。

     當然,它們在某些情況下可以實現相同的功能,二者並不是涇渭分明,而是有一定的交集。