PHP8-array_map() に新しく追加された配列関数は、効率的なデータ処理方法です。元の配列を変更せずに配列内の要素を 1 つずつ処理でき、処理結果が新しい配列を形成します。この記事では、array_map() 関数の使用法とデータ処理におけるその応用について紹介します。
1. array_map() 関数の基本的な使用法
array_map() 関数の構文は次のとおりです:
array_map(callable $callback, array .. .$arrays ): array
この関数 $callback の最初のパラメーターは呼び出し可能な関数またはメソッドで、2 番目のパラメーターは 1 つ以上の配列です。 array_map()関数は、パラメータで指定された配列に従って同じ添字位置の要素を取り出してコールバック関数に渡して処理し、処理結果を新しい配列に返します。したがって、渡される配列パラメーターは同じ長さである必要があります。
以下は、array_map() 関数を使用して配列内の要素を 2 乗し、新しい配列を返す簡単な例です。
$array = [1, 2, 3, 4, 5]; function square($x) { return $x * $x; } $result = array_map('square', $array); print_r($result); // 输出:[1, 4, 9, 16, 25]
上の例では、関数 square を定義しています。 () の場合、この関数は数値の 2 乗を計算できます。関数名をパラメータとして array_map() 関数に渡し、処理する配列を 2 番目のパラメータとして渡し、返された新しい配列を受け取ります。
2. array_map() 関数の高度な使用法
array_map() 関数には、基本的な使用法に加えて、データ処理に簡単に適用できる高度な使用法もあります。
array_map() 関数は、複数の配列を処理し、異なる配列の同じ添字位置にある要素を結合して、コールバック関数に渡すことができます。以下は、array_map() 関数を使用して 2 つの配列を処理する例です。
$array1 = [1, 2, 3]; $array2 = [4, 5, 6]; function combine($x, $y) { return $x * $y; } $result = array_map('combine', $array1, $array2); print_r($result); // 输出:[4, 10, 18]
上の例では、2 つの配列内の同じ添字位置を持つ要素を結合するコールバック関数 combin() を定義しました。 . 乗算計算を実行し、結果を返します。関数名をパラメータとして array_map() 関数に渡し、処理される 2 つの配列をパラメータとして渡し、返された新しい配列を受け取ります。
array_map() 関数は多次元配列も処理でき、2 次元配列または高次元配列の場合は次のことができます。加工寸法を指定します。以下は、array_map() 関数を使用して 2 次元配列を処理する例です。
$array = [ [1, 2, 3], [4, 5, 6] ]; function sum($arr) { return array_sum($arr); } $result = array_map('sum', $array); print_r($result); // 输出:[6, 15]
上の例では、コールバック関数 sum() を定義します。これは、要素の合計を計算します。配列を取得して計算結果を返します。関数名をパラメータとして array_map() 関数に渡し、処理する配列をパラメータとして渡し、返された新しい配列を受け取ります。
多次元配列を処理する場合、次元パラメータを指定して要素のどの次元を処理するかを指定できます。以下は、array_map() 関数を使用して 3 次元配列を処理する例です。
$array = [ [ [1, 2], [3, 4] ], [ [5, 6], [7, 8] ] ]; function sum($arr) { return array_sum($arr); } $result = array_map('sum', array_column($array, 0), array_column($array, 1)); print_r($result); // 输出:[16, 20]
上の例では、処理対象の 3 次元配列を 2 つの 2 次元配列に変換します。別の 2 次元配列の要素は 2 次元の要素です。これら 2 つの配列をパラメーターとして array_map() 関数に同時に渡し、コールバック関数 sum() を指定して、最終的に新しい 1 次元配列を取得します。
3. array_map() 関数のパフォーマンスの最適化
array_map() 関数を使用する場合、パフォーマンスの最適化の問題に注意する必要があります。処理する必要がある配列が大きく、処理用のコールバック関数が非常に単純な場合は、データ処理に foreach() ループを使用して操作効率を向上させることを検討できます。
以下は、array_map() 関数を使用して大規模な配列を処理する場合のパフォーマンスの比較です。
$array = range(1, 100000); $start_time = microtime(true); function add1($n) { return $n + 1; } $result = array_map('add1', $array); $end_time = microtime(true); echo 'array_map()函数耗时:' . ($end_time - $start_time) . '秒'; $start_time = microtime(true); foreach ($array as &$n) { $n += 1; } $result = $array; $end_time = microtime(true); echo 'foreach()函数耗时:' . ($end_time - $start_time) . '秒';
上の例では、array_map() 関数と foreach() を使用します。 10 を含む配列を処理するループ。1 万要素の配列の場合、どちらのメソッドも配列内の各要素に 1 を加算し、新しい配列を返します。実行結果からわかるように、foreach() を使用したデータ処理は、array_map() 関数を使用するよりも高速です。
4. 概要
array_map() 関数は、PHP8 で新しく追加された効率的なデータ処理メソッドで、元の配列を変更せずに配列内の要素を処理し、作成された新しい配列を返します。処理結果の。 array_map() 関数には、基本的な使用法に加えて、データ処理に適用できる高度な使用法もあります。ただし、データ処理に array_map() 関数を使用する場合は、コードの実行効率を向上させるためにパフォーマンスの最適化の問題に注意を払う必要があります。
以上がPHP8の配列関数:array_map()の効率的なデータ処理方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。