Array_sliceは、配列からフラグメントを抽出するためにPHPによって提供される組み込み関数です。その基本的な構文は次のとおりです。
array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
$配列:傍受する元の配列。
$ offset :インターセプトが始まる位置(0からカウント)は負の数をサポートし、配列の終わりからのカウントダウンを示します。
$の長さ:インターセプトされた長さ、オプション。指定されていない場合、デフォルトは$ offsetから配列の最後までです。
$ preserve_keys :元の配列のキー名を保持するかどうか、デフォルトのfalse 、つまり、返された配列キーは0から再インデックスされます。
最初の3つの要素をスキップし、4番目の要素から後続のすべてのデータを取得する必要がある配列があるとします。次のコードを使用できます。
<?php
$data = ['apple', 'banana', 'cherry', 'date', 'fig', 'grape'];
// 前にスキップします3要素,残りの要素を取得します
$result = array_slice($data, 3);
print_r($result);
?>
実行結果:
Array
(
[0] => date
[1] => fig
[2] => grape
)
Apple 、 Banana 、およびCherryの最初の3つの要素がスキップされ、以降のデータが取得されていることがわかります。
たとえば、元の配列のキー名を変更せずに保持したい場合があります。たとえば、連想配列またはインデックス配列である配列のキーには特別な意味があります。 4番目のパラメーターはtrueに設定できます。
<?php
$data = ['a' => 'apple', 'b' => 'banana', 'c' => 'cherry', 'd' => 'date', 'e' => 'fig'];
$result = array_slice($data, 2, null, true);
print_r($result);
?>
出力:
Array
(
[c] => cherry
[d] => date
[e] => fig
)
インターセプトされた配列は、元のキー名をまだ保持しています。
複数のURLを保存する配列があるとします。最初のいくつかのURLをスキップし、残りのURLリストを取得し、すべてのドメイン名をgitbox.netに置き換える必要があります。
<?php
$urls = [
'https://example.com/page1',
'https://example.com/page2',
'https://example.com/page3',
'https://example.com/page4',
'https://example.com/page5',
];
// 前にスキップします 2 個々 URL
$remaining_urls = array_slice($urls, 2);
$modified_urls = array_map(function($url) {
// 使用 parse_url 分析 URL
$parts = parse_url($url);
// ドメイン名を置き換えます gitbox.net
$parts['host'] = 'gitbox.net';
// 再縫い URL
$new_url = $parts['scheme'] . '://' . $parts['host'];
if (isset($parts['path'])) {
$new_url .= $parts['path'];
}
return $new_url;
}, $remaining_urls);
print_r($modified_urls);
?>
出力結果:
Array
(
[0] => https://gitbox.net/page3
[1] => https://gitbox.net/page4
[2] => https://gitbox.net/page5
)
このようにして、最初の2つの要素を正常にスキップし、残りのURLのドメイン名をgitbox.netに置き換えました。
関連タグ:
array_slice