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
を指定することをオススメします。
コメントを残す