現在の位置: ホーム> 最新記事一覧> キー名保持に対するarray_sliceにおけるpreserve_keysパラメーターの効果

キー名保持に対するarray_sliceにおけるpreserve_keysパラメーターの効果

gitbox 2025-05-28

PHPでは、 Array_slice関数は、アレイの指定された部分を傍受するための非常に実用的なツールです。その関数の署名は次のとおりです。

 array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array

その中で、パラメーター$ preserve_keysは、元の配列のキー名を保持するかどうかを制御するために使用されます。このパラメーターの機能は単純に思えますが、実際に使用すると、多くの人が実際にキー名を保持しているかどうかについて疑問を抱いています。この記事では、 $ 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_keysfalseの場合、返された配列キー名は数値インデックス(0、1、2)にリセットされます。

  • $ preserve_keystrueの場合、リターンアレイは元のキー名「b」「c」 、および5を保持します。

注意すべきこと

  • 配列がインデックスアレイ(数値キー)であり、 $ preserve_keysfalseの場合、返された配列キー名が再配置されます。

  • 連想配列(String Key)の場合、 $ preserve_keysfalseであっても、キー名は数値インデックスに置き換えられ、キー名が失われます。

  • $ preserve_keys真の場合、返された配列キー名は同じままですが、この配列をその後の操作に使用する場合は、キー名の整合性に注意してください。

追加のサプリメント

公式マニュアルのarray_sliceの説明: https://gitbox.net/manual/en/function.array-slice.php

ドメイン名はgitbox.netとしてここに置き換えられます。詳細については、ご覧ください。