in_array()¶
The in_array() function checks if a value exists in an array. It is important to use the third parameter ‘strict’ (set to true) to ensure type safety and avoid unexpected behavior due to PHP’s loose comparison rules.
A surprising pitfall is misplaced parentheses, which can lead to valid but incorrect logic: if (in_array($a, $b) == $c) vs if (in_array($a, $b == $c)).
<?php
$array = [1, 2, '3', 4];
// Loose comparison (default): returns true
var_dump(in_array(3, $array));
// Strict comparison: returns false
var_dump(in_array(3, $array, true));
// Misplaced parenthesis pitfall
$a = 1;
$b = [1, 2, 3];
$c = true;
// Correct usage
if (in_array($a, $b) === $c) {
echo 'Found';
}
// Potentially incorrect but valid syntax
if (in_array($a, $b === $c)) {
echo 'Valid PHP, but unlikely what was intended';
}
?>
See also A Case Of Misplaced Parenthesis and When placing the parenthesis is ambiguous.
Related : array_search