PHPで配列内を検索するarray_searchの出来ること

PHPを書いているととにかく配列操作系の array_〇〇 の標準関数の数が多いことに気づくかと思います。その中でも配列検索を行う array_search を使って出来ることについて解説していきます。

実行コード

実際に使う方法と結果を以下にまとめました。

<?php

// PHP 8.1.12

array_search('lemon', ['apple', 'orange', 'grape']);
// false

array_search('apple', ['apple', 'orange', 'grape']);
// 0

array_search('apple', ['apple', 'orange', 'apple', 'grape']);
// 0

array_search('orange', ['one' => 'apple', 'two' => 'orange', 'three' => 'grape']);
// 'two'

array_search(1, ['1', '2', '3']);
// 0

array_search(2, ['1', '2', '3'], true);
// false

array_search(1, [['1', '2'], '3']);
// false

array_search([1, 2], [['1', '2'], '3']);
// 0

array_search('needle', [0, 1, 2]);
// false

array_search('needle', [0 => 0]);
// false

array_search(new stdClass(), [1, 2, 3, new stdClass()]);
// 0

array_search(new stdClass(), [1, 2, 3, new stdClass()], true);
// false

$klass = new stdClass();
array_search($klass, [1, 2, 3, $klass], true);
// 3

解説

array_search() を実行することで配列内の値を検索して同一内容が存在するキーの取得をすることができます。

引数や返却値についてはこちらを参照ください。

array_search(
    mixed $needle,
    array $haystack,
    bool $strict = false
): int|string|false

第2引数 $haystack 内の 第1引数 $needle を検索します。

第3引数の $strict はデフォルト false になっており、 true を指定することで厳密な型比較と同一のインスタンスであるかも確認します。

公式マニュアル: https://www.php.net/manual/ja/function.array-search.php

終わりに

以上、 array_search の使い方でした。

配列内を検索してマッチした場合にキーの値を返却してくれます。

オブジェクトの検索をする場合には予想外の挙動をしてしまう場合もあるため、第3引数の $strict = true を指定することをオススメします。

投稿者


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA