ホームページ >バックエンド開発 >PHPチュートリアル >PHP での array_map と array_walk の使用の簡単な分析と比較

PHP での array_map と array_walk の使用の簡単な分析と比較

高洛峰
高洛峰オリジナル
2016-12-12 09:49:371416ブラウズ

1. array_map()

1. array_map() 関数は、配列内の各値にユーザー定義関数を適用し、関数が適用された後の新しい値を含む配列を返します。が適用され、戻り値がない場合、対応する新しい値の配列は空になります。

2. コールバック関数によって受け入れられるパラメータの数は、array_map() 関数に渡される配列の数と一致している必要があります。

3. ヒント: 関数には 1 つ以上の配列を入力できます。入力 フェーズ関数が 2 つの配列に入る場合、関数の受け入れパラメーターも 2 つを持つ必要があります。MAP が値に渡されるとき、2 つの配列から文字数に応じて 1 つが取得されます。つまり、複数の配列が同期的に送信されます。1 つの配列を送信してから次のいくつかの配列を送信するのではなく、関数には複数のパラメーターも必要です

4. 構文: array array_map (callable callback,arrayarr1 [, array $ ] (array &array,callablefuncname [,mixed $userdata = NULL ] )

パラメータ:

$array 入力配列。

$funcname コールバック関数。通常、$funcname は 2 つのパラメーターを受け入れます。 $array パラメータの値は最初のパラメータとして使用され、キー名は 2 番目のパラメータとして使用されます。

$userdata オプションのパラメーター $userdata が指定されている場合、それは 3 番目のパラメーターとして $funcname に渡されます。


注:

$funcname が配列内の値を直接操作する必要がある場合は、funcname の最初のパラメーターを参照として指定します (アンパサンドを追加します)。このように、
これらのセルに変更を加えると、元の配列自体も変更されます。

戻り値:

成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

例:

<?php
//单数组形式
function myfunction($v)
{
 if ($v==="Dog")
 {
  return "Fido";
 }
 return $v;
}
 
$a=array("Horse","Dog","Cat");
print_r(array_map("myfunction",$a));
 
//多数组形式
function myfunction1($v1,$v2)
{
 if ($v1===$v2)
 {
  return "same";
 }
 return "different";
}
 
$a1=array("Horse","Dog","Cat");
$a2=array("Cow","Dog","Rat");
print_r(array_map("myfunction1",$a1,$a2));
?>


上記のルーチンは出力します:

<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
//传引用,改变了所传参数组
function test_alter(&$item1, $key, $prefix)
{
 $item1 = "$prefix: $item1";
}
 
function test_print($item2, $key)
{
 echo "$key. $item2<br />\n";
}
 
echo "Before ...:\n";
//单数组
array_walk($fruits, &#39;test_print&#39;);
 
//带额外参数
array_walk($fruits, &#39;test_alter&#39;, &#39;fruit&#39;);
echo "... and after:\n";
 
array_walk($fruits, &#39;test_print&#39;);


キーポイント:

マップは主にコールバック関数によって処理された新しい配列を取得するためのもので、必要なのは結果です。

walk では主にパラメータごとに 1 回ずつコールバック関数を使用します。重要なのは処理プロセスです。

walk はコールバック関数に追加のパラメータを提供すると考えられますが、map はできません

walk は主に配列内の各値を操作し、操作結果は元の配列に影響します

map は主に値を操作します配列内 新しい配列を取得する操作を実行した後、配列を返します

walk 配列を埋める必要があるため、値マップを返す必要はありません


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