• PHP

in_array() の使い方と実務での使用例

PHPの組み込み関数であるin_arrayは、とてもよく使う配列操作の関数です。

実際に実務でどのように使用されるか、例をいくつかあげてみます。

in_array() の基本構文

まずは in_array() の基本構文から。詳細はPHP公式ドキュメントをご確認ください。

in_array(mixed $needle, array $haystack, bool $strict = false): bool
  • $needle:検索したい値
  • $haystack:検索対象の配列
  • $strict:型も一致させたい場合は true(デフォルトは false

基本例:

$roles = ['admin', 'editor', 'viewer'];

if (in_array('admin', $roles)) {
    echo '管理者です';
}

よくある実務での使用例

今回は業務系Webサービスの開発での使用例をいくつか挙げます。

① ロール・権限チェック

$userRoles = ['editor', 'manager'];

if (in_array('admin', $userRoles)) {
    // 管理画面へのアクセスを許可
} else {
    // アクセス拒否
}

Laravelなどのフレームワークでも、
軽い判定処理なら in_array() がシンプルで使いやすいです。

② ステータスによる分岐処理

注文や申請などのステータスで処理を分けるケース。

$cancelableStatuses = ['pending', 'processing'];

if (in_array($order->status, $cancelableStatuses)) {
    // キャンセル処理を許可
} else {
    // キャンセル不可
}

業務系システムでは、
「この状態ならボタンを表示」「この状態なら処理可能」
といった条件に多用されます。

③ バリデーションや入力チェック

想定外の値が入力されていないかを簡易チェックする場面。

$allowedTypes = ['pdf', 'jpg', 'png'];

if (!in_array($uploadedFile->extension(), $allowedTypes)) {
    throw new Exception('許可されていないファイル形式です');
}

in_array() は軽量なので、独自バリデーションを書く場面でもよく使われます。

④ APIリクエストのパラメータ検証

外部APIから送られてくる値を、許可リストと照合する。

$allowedSortKeys = ['id', 'created_at', 'price'];

if (!in_array($request->get('sort'), $allowedSortKeys)) {
    $sortKey = 'created_at'; // デフォルトにフォールバック
}

セキュリティ上、動的なパラメータに制限をかけたいときにも役立ちます。

⑤ 特定ユーザーを除外

指定したユーザーIDが「除外リスト」に含まれているか確認。

$excludedUserIds = [1, 3, 5, 7];

if (in_array($user->id, $excludedUserIds)) {
    continue; // 処理スキップ
}

たとえばバッチ処理で「社内テストユーザーは対象外」などのケースに使われます。

⑥ 型の違いに注意する例($strict の活用)

数値と文字列の区別をしたい場合。

$ids = [1, 2, 3];

var_dump(in_array('1', $ids));       // true(デフォルトは型を無視)
var_dump(in_array('1', $ids, true)); // false(型も比較)

業務アプリでは $strict = true を指定して、思わぬ一致を避けることが推奨です。

まとめ

  • in_array() は小さな条件分岐をスマートに書くための定番関数
  • 特に「許可・除外・状態分岐」の場面でよく使われる
  • 型の扱いに注意しつつ、シンプルに書けるのが強み