ホームページ >バックエンド開発 >PHPチュートリアル >PHP: 配列操作関数 array_walk() および array_map()
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] => 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
成功した場合は 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() の配列が変更された場合、この関数の動作は未定義で予測できません。
以下は私自身が書いた簡単な例です:
a.is.AOutput
b.is 。 Bc.is.Cd.is.D
------------------------------------------ ---------------------------------------
------------------------------------------ ---------------------------------------