PR
PHP
更新:2024/06/04

phpのarray_searchについて

はるか
はるか
配列内の値ってどう調べるの?

ふゅか
ふゅか
array_searchを使用すると配列内の値を探索してそのキーを求めることができるわ。

array_search は 、配列内で特定の値を探し、そのキーを返します。

1. array_search の基本

array_search(mixed $needle, array $haystack, bool $strict = false)
  • $needle: 検索する値。
  • $haystack: 検索対象の配列。
  • $strict: true に設定すると、型の一致も考慮して検索します。

1.1. 戻り値

array_serachの返り値は検索した値が見つかった場合、その値のキーを返します。見つからなかった場合、false を返します。

2. array_search の使用例

2.1. 特定の値のキーを検索する

例えば、名前が ‘はるな’ の家族の関係(キー)を見つけたい場合は、以下のように array_search を使用します。

<?php
$family = ['姉' => 'ふゅか', '妹' => 'はるな', 'はい' => 'おなかすいた'];
// 'はるな' のキーを探す
$key = array_search('はるな', $family);
// 結果の出力
var_dump($key);

このコードは、配列 $family の中で ‘はるな’ という値を探し、そのキーを出力します。この場合、出力結果は 次のようになります。

string(3) "妹"
はるか
はるか
妹は確かに私だ

2.2. 別の値を検索する

同様に、「おなかすい~~~た」 に対応するキーを見つけたい場合は、以下のようにします。

<?php
$family = ['姉' => 'ふゅか', '妹' => 'はるな', 'はい' => 'おなかすいた'];
$key = array_search('おなかすい~~~た', $family);
// 結果の出力
var_dump($key);

このコードは、「おなかすい~~~た」という値のキーを探し、見つかればそのキーを出力します。この場合の出力結果は次のようになります。

bool(false)

2.3. 同じ値が複数ある場合

次のように「ふゅか」という同じ値が複数ある場合を試します。

<?php
$family = ['姉' => 'ふゅか', '妹' => 'はるな','ane'=>'ふゅか', 'はい' => 'おなかすいた'];
$key = array_search('ふゅか', $family);
// 結果の出力
var_dump($key);

このコードは、配列 $family の中で 「ふゅか」 という値を探し、そのキーを出力します。この場合の出力結果は 次のようになります。ただし、複数ある場合は最初にマッチしたキーのみ表示されます。

string(3) "姉"
ふゅか
ふゅか
姉のキーが返ってきたわね。

3. $strictの比較例

3.1. $strict を使用しない例

<?php
$mixArray = ['1', 2, '3', 4];
// 型の厳密な一致を考慮せずに '1' を検索
$key = array_search(1, $mixArray);
// 結果の出力
var_dump($key);

この例では、$srict パラメータを設定していないため、文字列の '1' と数値の 1 が等しいと見なされます。その結果、配列の最初の要素(キー 0)がマッチとして返され次のようになります。

int(0)
はるか
はるか
‘1’は文字列のはずなのに

3.2. $strict を使用する例

<?php
$mixArray = ['1', 2, '3', 4];
// 型の厳密な一致を考慮して '1' を検索
$key = array_search(1, $mixArray, true);
// 結果の出力
var_dump($key);

ここでは、$strict パラメータを true に設定しています。この設定により、文字列の '1' は数値の 1 とは異なると判断されます。その結果、次のようになります。

bool(false)
はるか
はるか
‘1’と1は型が違うからな
PR