ホームページ  >  記事  >  バックエンド開発  >  PHP: 配列操作関数 array_walk() および array_map()

PHP: 配列操作関数 array_walk() および array_map()

WBOY
WBOYオリジナル
2016-06-20 12:37:271289ブラウズ

array_map() の関数プロトタイプは次のとおりです: array array_map ( callback callback, array arr1 [, array...] )

array_map() コールバックが適用された後、arr1 内のすべてのユニットを含む配列を返します。 コールバックによって受け入れられるパラメータの数は、array_map() 関数に渡される配列の数と一致している必要があります。

コールバック関数は、要素単位を処理するために array_map が呼び出す関数です。関数名は文字列の形式で array_map() に渡される必要があります。

例: (公式 php マニュアルに記載されているコード)

{ Return ($ n * $ n * $ n);これらはすべて配列の要素である必要があります。つまり、array_map() の最初のパラメーターを除き、残りのパラメーターは配列であり、コールバック関数のパラメーターの数と同じである必要があります。 🎜>





出力結果


配列 ( [0] => 91 [1] = > 85 [2] => 35 [4] => 99 [5] => 99 )

配列 ( [0] => 92 [1] => 87 [2] => 38 [3] => 99 [4] => 104 ========== ======= ========================================== ======= =====================

私が境界線

<?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_map() とは異なり、array_walk() の戻り値はブール値です。配列のデータは

にある必要があります。 コールバック関数を操作する (つまり、参照する)


array_walk() は、配列の要素の値を渡します。さらに、その型のデータをコールバック関数に渡すこともできます。

以下はそのプロトタイプと公式ドキュメントです:


bool
array_walk

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

成功した場合は TRUE を返し、

を返します失敗した場合は 🎜>FALSE

ユーザー定義関数 funcname を配列内の各セルに適用します。通常、 funcname は 2 つのパラメータを受け入れます。配列パラメータの値が最初のパラメータとして使用され、キー名が 2 番目のパラメータとして使用されます。オプションのパラメータ userdata が指定されている場合、それは 3 番目のパラメータとして callbackfuncname に渡されます。

funcname 関数が指定された引数よりも多くの引数を必要とする場合、

array_walk() が funcname を呼び出すたびに E_WARNING レベルのエラーが生成されます。これらの警告は、array_walk() の呼び出しの前に PHP のエラー演算子 @ を追加するか、error_reporting()

を使用することで抑制できます。

注: funcname が配列内の値に直接作用する必要がある場合は、funcname の最初のパラメーターを参照として指定します。これらのセルを変更すると、元の配列自体も変更されます。

注:

キー名とユーザーデータを funcname に渡す機能は、PHP 4.0 で新しく追加されました。

array_walk() は、配列の内部配列ポインターの影響を受けません。 array_walk() は、ポインターの位置に関係なく、配列全体をウォークスルーします。

ユーザーはコールバック関数内で配列自体を変更しないでください。たとえば、ユニットの追加/削除、ユニットの設定解除などです。

array_walk() の配列が変更された場合、この関数の動作は未定義で予測できません。

以下は私自身が書いた簡単な例です:

Output
a.is.A

b.is 。 Bc.is.Cd.is.D

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

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





声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。