概要
in_array()
は、指定した$needle
が配列($heystack
)の要素として含まれるかどうかをチェックする。
in_array($needle, 配列, $strict=false)
- デフォルトでは
$strict=false
で、型変換を行って内容比較する $strict=true
を指定すると、型の一致まで確認する
配列の要素の確認
以下の例ではデフォルトの$strict=false
となっていて、文字列・数値の変換が自動的に行われている('=='
と同じ効果)。
1 2 3 4 5 6 7 8 |
$array = ['ten', '11', 12]; echo in_array('ten', $array) ? "true\n" : "false\n"; // true echo in_array('eleven', $array) ? "true\n" : "false\n"; // false echo in_array('11', $array) ? "true\n" : "false\n"; // true echo in_array(11, $array) ? "true\n" : "false\n"; // true echo in_array('12', $array) ? "true\n" : "false\n"; // true echo in_array(12, $array) ? "true\n" : "false\n"; // true |
$strict=true
を指定すると、文字列と数値の違いも判定される('==='
と同じ効果)。
1 2 3 4 |
echo in_array('11', $array, true) ? "true\n" : "false\n"; // true echo in_array(11, $array, true) ? "true\n" : "false\n"; // false echo in_array('12', $array, true) ? "true\n" : "false\n"; // false echo in_array(12, $array, true) ? "true\n" : "false\n"; // true |
連想配列の値の確認
in_array()
で連想配列を指定すると、キー・値のうち指定した$needle
が「値として含まれるか」チェックする。キーとして含まれていてもfalse
になる。
1 2 3 4 5 6 7 8 9 10 11 12 |
$assoc_array = [ 'one' => 'two', '3' => '6', 5 => 10, ]; echo in_array('one', $assoc_array) ? "true\n" : "false\n"; // false echo in_array('two', $assoc_array) ? "true\n" : "false\n"; // true echo in_array('3', $assoc_array) ? "true\n" : "false\n"; // false echo in_array('6', $assoc_array) ? "true\n" : "false\n"; // true echo in_array(5, $assoc_array) ? "true\n" : "false\n"; // false echo in_array(10, $assoc_array) ? "true\n" : "false\n"; // true |
デフォルトの$strict=false
では型変換が自動的に行われる。
1 2 3 4 |
echo in_array('6', $assoc_array) ? "true\n" : "false\n"; // true echo in_array(6, $assoc_array) ? "true\n" : "false\n"; // true echo in_array('10', $assoc_array) ? "true\n" : "false\n"; // true echo in_array(10, $assoc_array) ? "true\n" : "false\n"; // true |
$strict=true
に指定すると、型の一致までチェックする。
1 2 3 4 |
echo in_array('6', $assoc_array, true) ? "true\n" : "false\n"; // true echo in_array(6, $assoc_array, true) ? "true\n" : "false\n"; // false echo in_array('10', $assoc_array, true) ? "true\n" : "false\n"; // false echo in_array(10, $assoc_array, true) ? "true\n" : "false\n"; // true |
注意点
in_array()
は空の配列やnull
に対してfalse
を返すnull
に対しては警告が出される
1 2 3 |
echo in_array('one', []) ? "true\n" : "false\n"; // false echo in_array('one', null) ? "true\n" : "false\n"; // false // PHP Warning: in_array() expects parameter 2 to be array, null given in ... |