PHP Arrays
Finding the Position of a Value in an Array
Problem
You want to know if a value is in an array. If the value is in the array, you want to know its key.Solution
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
}
Discussion
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.
No comments:
Post a Comment