The buggiest PHP function

Well, its not really PHP’s fault. array_search is misused by developers more than any other PHP function I have seen. Just today, I found two bugs caused by misinformed developers using the function. I myself am also guilty of using this function incorrectly.

The problem lies in array_search’s return value if the needle isn’t found in the haystack. If the needle isn’t found, array_search returns false. In my experience, many other libraries return -1 in this case. Nevertheless, false and 0, a valid array indice, evaluate to the same boolean value, which is where the problem lies.

For example, the following code will not work how you might think:

while(array_search($value, $array)){
....
}

while($key = array_search($value, $array)){
...
}

In the first example, in_array should be used for simplicities sake. In the second example, you must use the identical comparison operator (=== or !==). So, when using array_search, be careful not to make any wrong assumptions.