PHPでは、 array_slice関数は、アレイからサブアレイを抽出するために使用される一般的なツールです。その関数プロトタイプは次のとおりです。
array array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false)
ここで、パラメーター$の長さを使用して、傍受する要素の数を指定します。ただし、 $の長さが0またはnullの場合、動作は異なります。この記事では、これら2つのケースのarray_sliceの違いを詳細に分析します。
$配列:入力配列。
$ offset :傍受を開始する場所、負の数がサポートされています。
$の長さ:インターセプトされた要素の数、デフォルトのnullは、それが配列の最後に傍受されることを意味します。
$ preserve_keys :元の配列のキー名を保持するかどうか。
array_sliceを呼び出すと、 $ lengthパラメーターが渡されない場合、または渡された値がnullである場合、phpは$ offsetからArrayの最後まで傍受します。
例:
$arr = [1, 2, 3, 4, 5];
$result = array_slice($arr, 2, NULL);
print_r($result);
出力:
Array
(
[0] => 3
[1] => 4
[2] => 5
)
説明:インデックス2から開始、アレイの最後まで傍受します。
$ lengthが0に明示的に設定されると、 array_sliceは空の配列を返します。つまり、配列がどれだけ長くても、傍受された長さはゼロです。つまり、要素は返されません。
例:
$arr = [1, 2, 3, 4, 5];
$result = array_slice($arr, 2, 0);
print_r($result);
出力:
Array
(
)
説明:長さを0に指定し、要素を傍受しないでください。
長さパラメーター | 返品結果 | 説明します |
---|---|---|
ヌル | オフセットから配列の終わりまでのすべての要素 | デフォルトの動作、残りのすべての要素をインターセプトします |
0 | 空の配列 | 0の長さを傍受すると、結果は空の配列です |
配列のテールを傍受する場合は、 $ lengthパラメーターを省略するか、 nullを明示的に渡すことをお勧めします。
誤って空のアレイを返すことを避けたい場合は、 $ lestを0に設定しないように注意してください。
動的に渡されたパラメーターの場合、タイプの判断を行い、 0を渡して結果に影響を与えないようにします。
$arr = ['a' => 1, 'b' => 2, 'c' => 3];
$result = array_slice($arr, 1, NULL, true);
print_r($result);
出力:
Array
(
[b] => 2
[c] => 3
)
ここで、 NULLは、元のキー名を維持しながら、残りのすべての要素を傍受するために渡されます。