ホームページ  >  記事  >  バックエンド開発  >  array_map、array_walk、および array_filter は、PHP での動作と使用法においてどのように異なりますか?

array_map、array_walk、および array_filter は、PHP での動作と使用法においてどのように異なりますか?

DDD
DDDオリジナル
2024-11-03 13:06:03967ブラウズ

How do array_map, array_walk, and array_filter differ in their behavior and usage in PHP?

PHP での array_map、array_walk、および array_filter の区別

array_map、array_walk、および array_filter はすべて、コールバック関数を関数として受け取る PHP 関数です。配列に対してアクションを実行するための引数ですが、その動作と使用法には微妙な違いがあります。

主な違い:

1.値の変更:
array_map は入力配列内の値を変更できませんが、array_walk は変更できます。これは、array_map がコールバック関数の結果を使用して新しい配列を作成するのに対し、array_walk は入力配列をその場で変更するためです。

2.配列キー アクセス:
array_map は配列キーを操作できませんが、array_walk は操作できます。これは、array_walk が配列の値とキーの両方に基づいて操作を実行できることを意味します。

3.戻り値:
array_map はコールバック関数の結果を含む新しい配列を返しますが、array_walk はコールバック関数が入力配列のすべての要素に正常に適用された場合に true を返します。

4.複数の配列の反復:
array_map は複数の配列を入力として受け入れ、それらを並行して反復できるため、複数の配列を一度に操作できます。一方、array_walk は 1 つの配列のみを操作します。

5.コールバック引数の受け渡し:
array_walk を使用すると、追加の任意のパラメーターをコールバック関数に渡すことができ、コールバック内で実行されるアクションに柔軟性が提供されます。

6.返される配列の長さ:
array_map は、最大の入力配列と同じ長さの結果配列を生成します。 array_walk は配列を返さず、入力配列内の要素の数を変更できません。 array_filter は、フィルタリング関数に基づいて元の配列のサブセットを返し、元のキーを保持します。

例:

次のコードを考えてみましょう:

<code class="php">$a1 = array(2.4, 2.6, 3.5);
$a2 = array(2.4, 2.6, 3.5);

array_map('floor', $a1); // $a1 remains unchanged
array_walk($a2, function (&$v) { $v = floor($v); }); // modifies $a2</code>

最初のケースでは、array_map は $a1 の各要素の下限値を含む新しい配列を作成しますが、$a1 自体は変更されません。 2 番目のケースでは、array_walk は $a2 の要素を最も近い整数に切り捨てて直接変更します。

以上がarray_map、array_walk、および array_filter は、PHP での動作と使用法においてどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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