PHP8の配列関数:array_map()の効率的なデータ処理方法

WBOY
リリース: 2023-05-16 10:56:02
オリジナル
2013 人が閲覧しました

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() 関数には、基本的な使用法に加えて、データ処理に簡単に適用できる高度な使用法もあります。

  1. 複数の配列の処理

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 つの配列をパラメータとして渡し、返された新しい配列を受け取ります。

  1. 多次元配列の処理

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート