Search code examples
phparraysunset

Confusion between false and 0 arrays


Basically I have the following code :

unset($items[array_search($i,$items)]);

When the key is not found the array_search returns false which is equivalent to returning 0, which results in deleting the element 0 of the array if an item value is not found.

Any Workaround for this?


Solution

  • $itemindex = array_search($i,$items);
    if ($itemindex !== false) {
      unset($items[$itemindex]);
    }
    

    Using separate variable and strict comparison you will only run unset() if an item was actually found from the array. Using !== comparison to false you avoid confusing false with 0, since 0 is also a valid return value for array_search call, and in that case we do want to run unset().