現在の位置: ホーム> 最新記事一覧> array_sliceとarray_mapを組み合わせて、配列フラグメントを処理します

array_sliceとarray_mapを組み合わせて、配列フラグメントを処理します

gitbox 2025-05-26

PHP開発中、アレイ全体を通過する代わりに、いくつかの要素を配列内の要素を処理する必要があることがよくあります。これを達成するために、 array_slicearray_mapは2つの非常に有用な機能です。この記事では、それらを組み合わせて使用​​して配列の一部の効率的な処理を可能にする方法を詳細に説明し、実際のコードの例で説明します。

1。array_sliceの紹介

Array_sliceは、元の配列を変更せずに配列からサブアレイを抽出するためにPHPによって提供される関数です。基本的な構文は次のとおりです。

 array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
  • $配列:操作する元の配列。

  • $ offset :開始オフセット。これは、テールから開始することを示すための負の数になります。

  • $ length :抽出する要素の数は、省略すると、配列の端まで抽出されます。

  • $ preserve_keys :元の配列のキー名を保持するかどうか。

2。array_mapの紹介

array_mapは、配列内の各要素に作用し、処理された新しい配列を返すために使用されます。基本的な構文は次のとおりです。

 array_map(callable $callback, array $array): array

配列全体を繰り返し、各要素をコールバック関数の引数として渡し、結果を新しい配列として返します。

3。シナリオとアイデアを組み合わせて使用​​します

大きな配列を処理する場合、データの一部のみ(ページング、条件付き処理など)のみを気にする場合、最初にarray_sliceを使用してターゲットパーツを抽出し、次にarray_mapを使用してそれを処理します。

4.サンプルコード

一連の製品があるとし、各製品は連想配列であり、最初の5つの製品の名前を処理し、接頭辞を均一に追加するだけでいいとします。

 <?php

$products = [
    ['id' => 1, 'name' => 'コンピューター'],
    ['id' => 2, 'name' => '携帯電話'],
    ['id' => 3, 'name' => 'イヤホン'],
    ['id' => 4, 'name' => 'ねずみ'],
    ['id' => 5, 'name' => 'キーボード'],
    ['id' => 6, 'name' => 'モニター'],
];

// それを取り出す前に 5 製品
$firstFive = array_slice($products, 0, 5);

// 名前のプレフィックス“推薦する:”
$processed = array_map(function($product) {
    $product['name'] = '推薦する:' . $product['name'];
    return $product;
}, $firstFive);

// 出力結果
foreach ($processed as $item) {
    echo $item['id'] . ' - ' . $item['name'] . PHP_EOL;
}

出力の結果は次のとおりです。

 1 - 推薦する:コンピューター
2 - 推薦する:携帯電話
3 - 推薦する:イヤホン
4 - 推薦する:ねずみ
5 - 推薦する:キーボード

5。実用的なアプリケーションシナリオと組み合わせて

この方法は、ユーザーリストを返すAPIインターフェイスなど、インターフェイス開発で特に一般的です。

 <?php

// ユーザーデータを取得するにはシミュレーションします(データベースからのものです)
$users = [
    ['id' => 101, 'email' => '[email protected]'],
    ['id' => 102, 'email' => '[email protected]'],
    ['id' => 103, 'email' => '[email protected]'],
    ['id' => 104, 'email' => '[email protected]'],
    ['id' => 105, 'email' => '[email protected]'],
    ['id' => 106, 'email' => '[email protected]'],
];

// ページごとにページングパラメーターが表示されていると仮定します 3 ストリップ,現在、最初です 2 ページ
$page = 2;
$pageSize = 3;
$offset = ($page - 1) * $pageSize;

// 分ページ获取当前ページ的数据
$pagedUsers = array_slice($users, $offset, $pageSize);

// 小文字のメールアドレスをフォーマットします
$formatted = array_map(function($user) {
    $user['email'] = strtolower($user['email']);
    return $user;
}, $pagedUsers);

// JSON 出力
header('Content-Type: application/json');
echo json_encode($formatted);

返品結果は次のとおりです。

 [
    {"id":104,"email":"[email protected]"},
    {"id":105,"email":"[email protected]"},
    {"id":106,"email":"[email protected]"}
]

6。パフォーマンスと読みやすさ

array_slicearray_mapを使用する主な利点は次のとおりです。

  • 不必要な計算を避けてください:必要なデータの部分のみを処理します。

  • 論理的分離:データフィルタリングとデータ処理の手順は明確で明確であり、コードは非常に読みやすいです。

  • 強力な保守性:ページングや処理ロジックの変更など、将来ロジックを拡大するのに便利です。

結論

大量のデータを処理する場合、 array_slicearray_mapを合理的に使用すると、パフォーマンスを改善するだけでなく、コードをより簡潔で理解しやすくすることもできます。バックグラウンド管理システム、データインターフェイス、または実際のビジネスロジックであれ、このモデルは学習して適用する価値があります。