これら 2 つの関数の具体的な使い方を見てみましょう。 1 つ目は array_walk です。コードは次のとおりです。
<?php $arr = array(2,4,5,6,7); function xin(&$val,$key){ $val = $val*$val; } array_walk($arr, "xin"); var_dump($arr);
array (size=5) 0 => int 4 1 => int 16 2 => int 25 3 => int 36 4 => int 49
<?php function xin($a,$b){ return $a*$b; } $arr = array(2,3,4,5); $brr = array(5,6,7,8); $crr = array_map("xin",$arr,$brr); var_dump($crr);
array (size=4) 0 => int 10 1 => int 18 2 => int 28 3 => int 40
たとえば、配列を走査すると、両方の関数を実装できますが、一般的に言えば、それらの焦点は異なることがわかります。 (1)array_map は同時に n 個の配列を走査できますが、array_walk は通常 1 個の配列を走査します。
(2)array_map には戻り値が必要です。戻り値は新しい配列を形成する必要があるためです。ただし、array_walk は通常は元のデータを変更するために使用されるため、通常は必要ありません。
(3)array_map は通常データの役割を持ちますが、array_walk はデータの削除や追加を推奨せず、値の変更のみを推奨します。
もちろん、場合によっては同じ機能を実現できます。この 2 つは別個のものではありませんが、特定の共通点があります。
上記は、array と walk の内容を含め、Xin Xing による array_walk と array_map の関係と違いの簡単な分析を紹介したもので、PHP チュートリアルに興味のある友人に役立つことを願っています。