head — 配列の先頭要素を返すヘルパー

helper
  • カテゴリ: helper
  • 掲載バージョン: Laravel 12・PHP 8.4
  • 名前空間 / FQCN / コマンド: head(array $array): mixed
  • 関連: last / Arr::first / Collection::first / array_key_first
  • 変更履歴: ―

要点(TL;DR)

  • 配列の最初の要素の値を1件だけ取り出す
  • head($array)
  • 罠:
    • 空配列は null を返す(デフォルト値は持たない)
    • コレクションは渡さない($collection->first()を使う)
    • 先頭キーは取れない(array_key_first()を使う)

概要

head() は与えた配列の先頭の値を返す小さなヘルパーです。カーソル(内部ポインタ)を動かさないため、reset() のような副作用がありません。最初の要素だけ欲しい場面(先頭レコード・先頭ID・最初の設定値など)で、簡潔に書けます。

構文 / シグネチャ

mixed head(array $array)
  • 引数(表)
引数必須既定値説明
$arrayarrayなし先頭要素を取りたい配列
  • 戻り値mixed|null — 配列の先頭要素の。空配列は null
  • 例外/副作用:例外なし。配列の内部ポインタは変更されない。

使用例

最小例

<?php

$ids = [10, 11, 12];

$first = head($ids); // 10
var_dump($first);    // int(10)

実務例

<?php

use Illuminate\Support\Arr;
use Illuminate\Support\Facades\DB;

// 例1: リクエスト配列の先頭値を取りたい(空なら 'N/A' にフォールバック)
$tags = request()->input('tags', []); // ['news', 'tech'] など
$firstTag = head($tags) ?? 'N/A';

// 例2: DBから取得したIDリストの先頭ID
$ids = DB::table('posts')->where('status', 'published')->pluck('id')->all();
$firstId = head($ids); // 先頭の投稿ID

// 例3: 「配列かもしれない/単体値かもしれない」入力を安全に先頭取得
$maybeArray = request('category'); // 'book' または ['book', 'tech'] など
$firstCategory = head(Arr::wrap($maybeArray)); // いつでも先頭の値だけ取れる

よくある落とし穴・注意

  • 空配列は null:デフォルト値はないため、head($a) ?? 'default' のように合わせて使う。
  • コレクションは非推奨head($collection->all()) は配列化でメモリコストが増える。$collection->first() を使う。
  • キーは取れないhead() は値のみ。キーが欲しいなら array_key_first()
  • reset() との違いreset() は内部ポインタを動かすが、head()非破壊

代替・関連APIとの比較

  • Arr::first($array, $callback = null, $default = null):コールバックやデフォルトが必要ならこちら。条件付きで「最初に合致する要素」を返せる。
  • last($array):末尾の値を取りたいとき。
  • Collection::first():コレクションの先頭要素。LazyCollection でも遅延のまま取得可能。
  • array_key_first($array)(PHP):先頭キーが必要なとき。
  • reset($array)(PHP):先頭へポインタを移動し、現在の値を返す。副作用あり。

選定基準

  • シンプルに「先頭の値」→ head()
  • 条件・デフォルトが必要→ Arr::first()
  • コレクション→ Collection::first()
  • 先頭キー→ array_key_first()
  • ポインタを使うレガシー処理→ reset()(推奨度低)

テスト例(Pest)

<?php

it('gets the first element from array', function () {
    expect(head([3, 4, 5]))->toBe(3);
});

it('returns null for empty array', function () {
    expect(head([]))->toBeNull();
});

it('works with wrapped single value', function () {
    $value = head(\Illuminate\Support\Arr::wrap('x'));
    expect($value)->toBe('x');
});

トラブルシュート(エラー別)

症状/エラー原因対処
null が返る空配列だったhead($a) ?? 'default' でデフォルトを用意
メモリ使用量が増えるコレクションを ->all() で配列化して head()直接 $collection->first() を使う
先頭キーが欲しいhead() は値のみ取得array_key_first($array) を使う
期待と違う要素が返る事前の並び替えが想定と不一致sort/orderBy/ksort 等で並び順を明示

参考リンク

長野県・北アルプス地方在住のフリーランスWebプログラマー。
「落ち着くためのWeb開発」をテーマに、訪れる人が安心して使えるサービスづくりを心がけています。

LaravelやWordPressなどのWebアプリケーション開発を得意とし、技術面の安定性はもちろん、運用後も長く活用できる設計を大切にしています。
静かな山間の暮らしから生まれる視点で、シンプルかつ本質的な解決策をご提案します。

野鳥観察も趣味のひとつで、特にミソサザイ(Wren)に魅力を感じています。
小さな体に反して力強く上向きの尾羽、そして澄んだ鳴き声が遠くまで響く姿に、静かな存在感と芯の強さを感じます。
このサイト名「Laravel Wren」には、そんなミソサザイのように、小さくても確かな価値を届けたいという想いを込めています。

信頼できるパートナーとして、そして気軽に相談できる存在として、あなたのWebプロジェクトをサポートします。

Yudai Tsuyuzakiをフォローする