You want know if an element is in an array, and, if it is, you want to know where it is located.
Use array_search( ). It returns the key of the found element or false:
$position = array_search($array, $value);
if ($position !== false) {
// the element in position $position has $value as its value in array $array
}
Use in_array( ) to find if an array contains a value; use array_search( ) to discover where that value is located. However, because array_search( ) gracefully handles searches in which the value isn't found, it's better to use array_search( ) instead of in_array( ). The speed difference is minute, and the extra information is potentially useful:
$favorite_foods = array(1 => 'artichokes', 'bread', 'cauliflower', 'deviled eggs');
$food = 'cauliflower';
$position = array_search($food, $favorite_foods);
if ($position !== false) {
echo "My #$position favorite food is $food";
} else {
echo "Blech! I hate $food!";
}
Use the !== check against false because if your string is found in the array at position 0, the if evaluates to a logical false, which isn't what is meant or wanted.
If a value is in the array multiple times, array_search() is only guaranteed to return one of the instances, not the first instance.
Recipe 4.12 for checking whether an element is in an array; documentation on array_search( ) at http://www.php.net/array-search; for more sophisticated searching of arrays using regular expression, see preg_replace( ) at http://www.php.net/preg-replace and Chapter 13.
Copyright © 2003 O'Reilly & Associates. All rights reserved.