Use array_search( ) . It
returns the key of the found value. If the value is not in the array, it returns
false:
$position = array_search($value, $array); 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:
$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.