PHP | 複数の値で配列を検索する方法

PHP,PHP 配列,PHP 判別・検索

複数の値で配列を検索する方法

PHPのin_array()やarray_intersect()を使って、複数の指定文字で配列を検索して判別する方法の紹介です。

in_array()を使って複数の値で配列を検索

in_array()では、第1引数に指定する文字列や数値の検索値には配列は指定できません。

例えば、in_array()を使って配列を複数の値で検索する場合には、数が少ないという前提であれば複数の条件を書いたif文を記述すれば対応すること可能です。

複数の値が全て含まれているか

if文の複数条件をandにすることで、複数のin_array()の結果が全てtrueであることを確認しています。

$array = array('apple', 'grape', 'pine');

if(in_array( 'apple', $array) && in_array( 'apple', $array)){
	echo 'appleとgrape、両方の値を持つデータは存在する';
}else{
	echo 'appleとgrape、両方の値を持つデータは存在しない';
}

複数の値のいずれかが含まれているかいづれか

if文の複数条件をorにすることで、複数のin_array()の結果のいずれかがtrueであることを確認しています。

$array = array('apple', 'grape', 'pine');

if(in_array( 'apple', $array) || in_array( 'apple', $array)){
	echo 'appleとgrape、いずれかの値を持つデータは存在する';
}else{
	echo 'appleとgrape、いずれの値を持つデータは存在しない';
}

array_intersect()を使って複数の値で配列を検索

array_intersect()を利用して複数の値で配列を検索する方法です。

array_intersect()は配列と配列を比較して一致した値で作られた配列を返します。

複数の値が全て含まれているか

検索する値のある配列とarray_intersect()での検索結果の配列(返り値)の数をcount()で取得して比較しています。

$array = array('apple', 'grape', 'pine');
$search = array('apple', 'grape');

if(count($search) == count(array_intersect($search, $array))){
	echo 'appleとgrape両方の値を持つデータは存在する';
}else{
	echo 'appleとgrape両方の値を持つデータは存在しない';
}

複数の値のいずれかが含まれているか

いずれかが含まれている場合を判別するにはarray_intersect()での検索結果の配列(返り値)の数が0かどうかで判別しています。

$array = array('apple', 'grape', 'pine');
$search = array('apple', 'grape');

if(count(array_intersect($search, $array)) != 0){
	echo 'appleとgrape、いずれかの値を持つデータは存在する';
}else{
	echo 'appleとgrape、いずれかの値を持つデータは存在しない';
}