バックエンド

PHPで配列の先頭から値を取り出す方法

PHPで配列の先頭の要素を取得し、配列から削除する方法はいくつかあります。本記事では、array_shift()reset() を使った方法を詳しく解説し、適切な場面で使い分けられるようにします。

1. array_shift() を使う方法

array_shift() は、配列の先頭の要素を取得し、配列から削除します。

使い方

$fruits = ["apple", "banana", "cherry"];
$first = array_shift($fruits);

echo $first; // apple
print_r($fruits); // ["banana", "cherry"]

特徴

  • 先頭の要素を取得しつつ、配列から削除する
  • インデックスが連番の配列の場合、キーが再付番される

注意点

この関数を多用すると、配列の要素を削除するため、パフォーマンスに影響が出る可能性があります。特に大規模な配列で頻繁に使用する場合は注意しましょう。

2. reset() を使う方法(削除せず取得する)

配列の先頭要素を取得するだけで、配列は変更しない方法として reset() があります。

使い方

$fruits = ["apple", "banana", "cherry"];
$first = reset($fruits);

echo $first; // apple
print_r($fruits); // ["apple", "banana", "cherry"]

特徴

  • 先頭の要素を取得するだけで、配列のデータは変更しない
  • 配列の内部ポインタが変更される

注意点

reset() は、配列の内部ポインタを先頭に戻すだけなので、配列が空のときは false を返します。

3. current() を使う方法(ポインタ操作なし)

current() を使うと、内部ポインタの位置を変更せずに現在の要素を取得できます。

使い方

$fruits = ["apple", "banana", "cherry"];
$first = current($fruits);

echo $first; // apple
print_r($fruits); // ["apple", "banana", "cherry"]

特徴

  • 配列の内部ポインタを変更せず、現在の要素を取得する
  • reset() との違いは、内部ポインタを先頭に戻さない点

4. array_values() を使う方法(連想配列の対応)

連想配列の先頭の値を取得したい場合、array_values() でインデックス配列に変換してから取得する方法もあります。

使い方

$person = ["name" => "Alice", "age" => 30, "city" => "Tokyo"];
$values = array_values($person);
$first = $values[0];

echo $first; // Alice

特徴

  • 連想配列の先頭の値を取得するのに適している
  • 元の配列のキーは維持されない

5. foreach() を使う方法(最初の要素のみ取得)

foreach() を使って、最初の1回だけループを実行することで先頭の要素を取得できます。

使い方

$fruits = ["apple", "banana", "cherry"];

foreach ($fruits as $first) {
    break; // 1回目でループを抜ける
}

echo $first; // apple

特徴

  • 配列の構造を変更せずに先頭の要素を取得できる
  • 連想配列にも対応

まとめ

方法先頭要素取得配列変更連想配列対応
array_shift()〇 (要素削除)
reset()
current()
array_values()✕ (キー削除)
foreach()

どの方法を使うべき?

  • 配列を変更したいarray_shift()
  • 配列を変更せずに取得したいreset()current()
  • 連想配列でキーを保持したいforeach()

PHPでの配列操作は状況によって適切な方法を選ぶことが重要です。用途に応じて最適な方法を選びましょう!

-バックエンド
-