SYNCER

SYNCER

array_search() - 配列から指定した値を検索する

公開日:

array_searchは、配列の中から指定した値を検索する関数です。見つかった場合はキーを返します。複数見つかった場合は一番の先頭側のキーを返します。

構文

mixed array_search ( mixed $needle , array $haystack [, bool $strict = false ] )

パラメータ

$needle

検索する値。

$haystack

対象の配列。

$strict

初期値: false

厳密に比較をするか否か。

返り値

mixed

見つかった場合は一番先頭側のキー、見つからなかった場合はfalseが返る。

サンプルコード

値を検索する

配列の中から値を検索し、最初に見つかった値のキーを返します。

php

<?php

	// 配列
	$queue = [ "a", "b", "c", "a", "b", "c" ] ;

	// 実行
	$result = array_search( "b", $queue ) ;

	// 返り値
	var_dump( $result ) ;

結果 (出力内容) - PHP7.0.21

int(1)

0の返り値に注意

「見つかったら〜をする」という処理をする場合、if( $result ) {...}という条件では不具合が起きます。見つかった場合の返り値(キー)が0の場合があるからです。if($result !== false) {...}としなければいけません。

php

<?php

	// 配列
	$queue = [ "a", "b", "c" ] ;

	// 実行
	$result = array_search( "a", $queue ) ;

	// 見つかった場合
	if ( $result !== false ) {
		echo "キー番号の" . $result . "で値が見つかりました。" ;
	}

結果 (出力内容) - PHP7.0.21

キー番号の0で値が見つかりました。

曖昧な比較

デフォルトでは、検索時の比較が曖昧です。例えば数値の1と文字列の"1"は同じと判定されます。

php

<?php

	// 配列
	$queue = [ "1", 1 ] ;

	// 実行
	$result = array_search( 1, $queue ) ;

	// 見つかった場合
	var_dump( $result ) ;

結果 (出力内容) - PHP7.0.21

int(0)

厳密な比較

第3引数にtrueを指定すれば、型を含めた厳密な比較を行ないます。

php

<?php

	// 配列
	$queue = [ "1", 1 ] ;

	// 実行
	$result = array_search( 1, $queue, true ) ;

	// 見つかった場合
	var_dump( $result ) ;

結果 (出力内容) - PHP7.0.21

int(1)

サンドボックス

ソースコードを編集してarray_search()の挙動を確認して下さい。

int(1)

参考リンク

  • PHP - 公式マニュアル。