0

array_slice() と array_splice() の違いを確認するためにさまざまなデータを試してみましたが、これら 2 つの関数は私のコンピューターでは同じ結果になりました。

$input = array("red", "green", "blue", "yellow");
print_r(array_splice($input, 2));  //the result should be {"red", "green"}

$input = array("red", "green", "blue", "yellow");
print_r(array_slice($input, 2));   //the result should be {"blue", "yellow"}

どちらの場合も、次の出力が表示されます: Array ( [0] => blue [1] => yellow )

何かアイデアはありますか?

4

3 に答える 3

7

だからあなたは配列を持っています

$input = ["red", "green", "blue", "yellow"];

配列スライス

実行すると、 (2)array_slice($input, 2)によって要求している部分と、省略した 3d パラメータ (残っている数だけを意味します) が返されます。また、ここで興味深いのは、が参照渡しではなく渡されることです。つまり、変更されないままになります。$offset$length$input

$result = array_slice($input, 2);
// $input == [0 => "red", 1 => "green", 2 => "blue", 3 => "yellow"];
// $result == [0 => "blue", 1 => "yellow"];

キーを保持するためのオプションの 4 番目のパラメーターがあります。これは、返されるキーが変更されないことを意味します。

$result = array_slice($input, 2, null, true);
// $result == [2 => "blue", 3 => "yellow"];

配列スプライス

この関数は に似ていますがarray_slice、今回は配列が参照によって渡されます。したがって、関数は初期配列を変更できます。さらに、4 番目のパラメーターは、スライスされた部分を置き換える必要がある配列を受け入れます (省略された場合、その部分が空の配列に置き換えられることを意味します)。

$result = array_splice($input, 2);
// $input = [0 => "red", 1 => "green"];
// $result == [0 => "blue", 1 => "yellow"];

$result = array_splice($input, 2, null, ["brown", "black"]);
// $input = [0 => "red", 1 => "green", 2 => "brown", 3 => "black"];
// $result == [0 => "blue", 1 => "yellow"];
于 2012-10-17T10:49:39.897 に答える
2

array_splice($ input、2)は、オフセット2の要素を削除し、それらを何も置き換えず(置き換えるものを指定していません)、抽出された要素で構成される配列を返します。これは青と黄色です。変換された元の配列($ input)は参照によって変更され、返されません

array_slice($ input、2)は、$inputのオフセット2からすべての要素を返します。これは青と黄色です。

于 2012-10-17T10:50:20.177 に答える
0

のPHPマニュアルによるとarray_splice

抽出された要素で構成される配列を返します。

例えば:

$input = array("red", "green", "blue", "yellow");
array_splice($input, 2);
// $input is now array("red", "green")

したがって、$inputと の値は同じでprint_r(array_splice...はありません。

于 2012-10-17T10:47:49.410 に答える