PHP開発中、アレイ全体を通過する代わりに、いくつかの要素を配列内の要素を処理する必要があることがよくあります。これを達成するために、 array_sliceとarray_mapは2つの非常に有用な機能です。この記事では、それらを組み合わせて使用して配列の一部の効率的な処理を可能にする方法を詳細に説明し、実際のコードの例で説明します。
Array_sliceは、元の配列を変更せずに配列からサブアレイを抽出するためにPHPによって提供される関数です。基本的な構文は次のとおりです。
array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
$配列:操作する元の配列。
$ offset :開始オフセット。これは、テールから開始することを示すための負の数になります。
$ length :抽出する要素の数は、省略すると、配列の端まで抽出されます。
$ preserve_keys :元の配列のキー名を保持するかどうか。
array_mapは、配列内の各要素に作用し、処理された新しい配列を返すために使用されます。基本的な構文は次のとおりです。
array_map(callable $callback, array $array): array
配列全体を繰り返し、各要素をコールバック関数の引数として渡し、結果を新しい配列として返します。
大きな配列を処理する場合、データの一部のみ(ページング、条件付き処理など)のみを気にする場合、最初にarray_sliceを使用してターゲットパーツを抽出し、次にarray_mapを使用してそれを処理します。
一連の製品があるとし、各製品は連想配列であり、最初の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 - 推薦する:キーボード
この方法は、ユーザーリストを返す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]"}
]
array_sliceとarray_mapを使用する主な利点は次のとおりです。
不必要な計算を避けてください:必要なデータの部分のみを処理します。
論理的分離:データフィルタリングとデータ処理の手順は明確で明確であり、コードは非常に読みやすいです。
強力な保守性:ページングや処理ロジックの変更など、将来ロジックを拡大するのに便利です。
大量のデータを処理する場合、 array_sliceとarray_mapを合理的に使用すると、パフォーマンスを改善するだけでなく、コードをより簡潔で理解しやすくすることもできます。バックグラウンド管理システム、データインターフェイス、または実際のビジネスロジックであれ、このモデルは学習して適用する価値があります。