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