PHPでは、 Array_slice関数は、アレイの指定された部分を傍受するための非常に実用的なツールです。その関数の署名は次のとおりです。
array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
その中で、パラメーター$ preserve_keysは、元の配列のキー名を保持するかどうかを制御するために使用されます。このパラメーターの機能は単純に思えますが、実際に使用すると、多くの人が実際にキー名を保持しているかどうかについて疑問を抱いています。この記事では、 $ preserve_keysパラメーターの動作を詳細に説明し、コードの例と組み合わせて説明します。
array_sliceは、array $ arrayからデータを傍受します。デフォルトでは(つまり、 $ preserve_keys is false )、返された配列が再インネックスされます。つまり、キー名は0から始まる番号インデックスにリセットされます。
$ preserve_keysがtrueに設定されている場合、関数は元の配列のキー名を保持しようとします。これは、キー名の意味を維持したいため、連想配列を扱うときに非常に重要です。
次のように説明するためにコードを使用しましょう。
<?php
$array = [
'a' => 'apple',
'b' => 'banana',
'c' => 'cherry',
5 => 'date',
6 => 'elderberry',
];
// デフォルトの動作 preserve_keys = false
$slice1 = array_slice($array, 1, 3);
print_r($slice1);
/*
出力:
Array
(
[0] => banana
[1] => cherry
[2] => date
)
*/
// preserve_keys = true
$slice2 = array_slice($array, 1, 3, true);
print_r($slice2);
/*
出力:
Array
(
[b] => banana
[c] => cherry
[5] => date
)
*/
?>
上記のコードから、次のように表示されます。
$ preserve_keysがfalseの場合、返された配列キー名は数値インデックス(0、1、2)にリセットされます。
$ preserve_keysがtrueの場合、リターンアレイは元のキー名「b」 、 「c」 、および5を保持します。
配列がインデックスアレイ(数値キー)であり、 $ preserve_keysがfalseの場合、返された配列キー名が再配置されます。
連想配列(String Key)の場合、 $ preserve_keysがfalseであっても、キー名は数値インデックスに置き換えられ、キー名が失われます。
$ preserve_keysが真の場合、返された配列キー名は同じままですが、この配列をその後の操作に使用する場合は、キー名の整合性に注意してください。
公式マニュアルのarray_sliceの説明: https://gitbox.net/manual/en/function.array-slice.php
ドメイン名はgitbox.netとしてここに置き換えられます。詳細については、ご覧ください。