配列の先頭から要素を取り出す
array_shift関数を使うと、配列の先頭から要素を1つ取得することができます。
PHP コード例
$value = array_shift($array);
配列$arrayの先頭から要素を1つ取り出して、$valueに代入します。
取り出した要素は$arrayからは削除されます。
もし取り出す要素がなかった場合には$valueにNULLが代入されます。
PHP コード例
<?php
// 取り出した要素を入れる変数$dog = null;
// 配列を用意$array = array( 'Shibaken', 'Pomeranian', 'Golden retriever', 'Greyhound', 'Siberian husky');
// 配列の先頭から要素を取得$array_dog = array_shift($array);
// 配列から取得した値を出力var_dump($dog);
// 取り出した後の配列を出力var_dump($array);
$dogと$arrayをそれぞれ出力した内容は次のようになります。
$dogの出力例
string(8) "Shibaken"
$arrayの出力例
array(4) { [0]=> string(10) "Pomeranian" [1]=> string(16) "Golden retriever" [2]=> string(9) "Greyhound" [3]=> string(14) "Siberian husky"}
取り出した値が$dogに代入され、取り出した後の配列は先頭にあった要素が1つ消えていることが確認できます。
多次元配列の先頭から要素を取り出す
array_shift関数を多次元配列に使用した場合については、親要素を1つ取り出します。
PHP コード例
<?php
// 取り出した要素を入れる変数$dog = null;
$array = array( 'dog1' => array( 'id' => 1, 'name' => 'Shibaken', 'age' => 3 ), 'dog2' => array( 'id' => 2, 'name' => 'Pomeranian', 'age' => 5 ), 'dog3' => array( 'id' => 3, 'name' => 'Golden retriever', 'age' => 6 ), 'dog4' => array( 'id' => 4, 'name' => 'Greyhound', 'age' => 2 ));
// 配列の先頭から要素を取得$dog= array_shift($array);
// 配列から取得した値を出力var_dump($dog);
// 取り出した後の配列を出力var_dump($array);
$dogの出力例
array(3) { ["id"]=> int(1) ["name"]=> string(8) "Shibaken" ["age"]=> int(3)}
$arrayの出力例
array(3) { ["dog2"]=> array(3) { ["id"]=> int(2) ["name"]=> string(10) "Pomeranian" ["age"]=> int(5) } ["dog3"]=> array(3) { ["id"]=> int(3) ["name"]=> string(16) "Golden retriever" ["age"]=> int(6) } ["dog4"]=> array(3) { ["id"]=> int(4) ["name"]=> string(9) "Greyhound" ["age"]=> int(2) }}
このように、通常の配列同様に親要素を1つ取り出すことができます。
ただし、取り出した際に配列のキー(上記コードではdog1)は失われるので注意してください。
配列に残った要素については、数値が添字になっている配列の場合は先頭から0が振り直され、連想配列の場合は「キー」と「値」の組み合わせが保持されたままの状態となります。
こちらの関数は先頭の要素から順に取り出していきますが、反対に末尾から要素を取り出すことができるarray_pop関数も用意されています。
詳しくは、別記事「配列の末尾から値を取り出す」を参照してください。
また、array_shift関数の対になる関数として、配列の先頭に要素を追加するarray_unshift関数や、末尾に値を追加するarray_push関数もあります。