中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP:數組操作函數array_walk()和array_map()

發布時間:2020-07-03 10:41:05 來源:網絡 閱讀:1451 作者:在特北 欄目:web開發

 array_map()的函數原型為:array array_map ( callback callback, array arr1 [, array ...] )

 array_map() 返回一個數組,該數組包含了arr1中的所有單元經過callback作用過之后的單元。callback接受的參數數目應該和傳遞給 array_map() 函數的數組數目一致。

  

  callback函數就是array_map所將調用來處理元素單元函數,應以字符串的形式將函數名傳遞給array_map()

  如:(php官方手冊所給出的代碼)

        <?php
            function cube($n)
            {
                return(
$n * $n * $n);
            }

            $a = array(1, 2, 3, 4, 5);
            $b = array_map("cube", $a);
            print_r($b);
        ?>

    cube即為callback函數 ,且array_map的callback函數的參數每一個應均為數組的元素,也就是array_map()除了第一個參數外,其余參數應均為數組且應與回調函數的參數個數一樣.

    

<?php
	//callback 1
	function  check($n)
	{
		//array_mapcallback的參數為數組的元素,
		//也就是callback中有幾個參數array_map就應傳入幾個數組
		if($n>100)
		{
			return  $n-10;
		}else 
		{
			return  $n;
		}
	}
	//callback 2
	function  add($a,$b)
	{
		return  $a+$b;
	}
	
	$arr = array(101,85,35,105,99,109);//
	var_dump($arr);
	$brr = array(1,2,3,4,5,6);
	$arr = array_map("check", $arr);
	$brr = array_map("add", $arr,$brr);
	
	
	print_r($arr);
	echo "<br/>";
	print_r($brr);
	
	
?>

輸出結果

array (size=6)
  0 => int 101
  1 => int 85
  2 => int 35
  3 => int 105
  4 => int 99
  5 => int 109

Array (    [0] => 91    [1] => 85    [2] => 35    [3] => 95    [4] => 99    [5] => 99 )
Array (    [0] => 92    [1] => 87    [2] => 38    [3] => 99    [4] => 104    [5] => 105 )

========================================================================================

                        我是分割線

========================================================================================


    與array_map()不同array_walk()的返回值是布爾型,也就是如果想要修改數組的數據,應該在callback函數上做手腳(也就是引用)

   array_walk()會將數組的元素的值,以及鍵值傳遞給callback函數,此外還允許傳遞其類型的數據給callback函數.

   以下為其原型以及官方文檔:

bool array_walk ( array &array, callback funcname [, mixed userdata] )

如果成功則返回 TRUE,失敗則返回 FALSE

將用戶自定義函數funcname應用到array數組中的每個單元。典型情況下funcname接受兩個參數。array參數的值作為第一個,鍵名作為第二個。如果提供了可選參數userdata,將被作為第三個參數傳遞給 callbackfuncname

如果funcname函數需要的參數比給出的多,則每次 array_walk() 調用funcname時都會產生一個 E_WARNING 級的錯誤。這些警告可以通過在 array_walk() 調用前加上 PHP 的錯誤操作符 @ 來抑制,或者用 error_reporting()

注: 如果funcname需要直接作用于數組中的值,則給funcname的第一個參數指定為引用。這樣任何對這些單元的改變也將會改變原始數組本身。

注: 將鍵名和 userdata 傳遞到funcname中是 PHP 4.0 新增加的。

array_walk() 不會受到array內部數組指針的影響。array_walk() 會遍歷整個數組而不管指針的位置。

用戶不應在回調函數中改變該數組本身。例如增加/刪除單元,unset 單元等等。如果 array_walk() 作用的數組改變了,則此函數的的行為未經定義,且不可預期。 

    以下是我自己寫的一個簡單的例子:

    

<?php
	function alter(&$value,$key,$userdata)
	{
	        //在此處不對元素值做任何修改,如果想要修改則需像我一樣給參數加上引用
		echo $key.$userdata.$value.'<br/>';
	}
	$arr = array("a"=>"A","b"=>"B","c"=>"C","d"=>"D");
	//array_walk -- 對數組中的每個成員應用用戶函數
	//函數原型:bool array_walk ( array &array, callback funcname [, mixed userdata] )
	//第一個參數為 數組
	//第二個參數為 callback函數名,
	//第三個參數為 可選參數(將傳遞給所callback的函數)
	//==============================================================================
	//array_map()將傳遞callback 函數的 的
	//第一個參數是元素的值,如需修改則應加上 &操作符
	//第二個參數為鍵值,如需修改則作如上處理
	//第三個參數為用戶自己傳遞給函數的數據(即array_walk()中的第三個參數)
	
	array_walk($arr,'alter',".is.");
	
?>

輸出
a.is.A
b.is.B
c.is.C
d.is.D

----------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------    

   




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

定安县| 阜新市| 大冶市| 隆回县| 夹江县| 丹巴县| 通辽市| 白河县| 正定县| 平武县| 平阴县| 墨竹工卡县| 武威市| 浙江省| 米易县| 宣武区| 兴国县| 江安县| 台江县| 佛学| 博乐市| 南汇区| 偃师市| 皋兰县| 静乐县| 曲沃县| 衡南县| 德安县| 通河县| 札达县| 年辖:市辖区| 屯留县| 文化| 蒙自县| 万盛区| 璧山县| 南川市| 定兴县| 江门市| 西平县| 旬阳县|