Search code examples
phparraysunset

How to remove element from non-associative array in php


I'm trying to remove specific element from php array with unset function. Problem is that when I var_dump array it shows all indexes (not good) but If I try to var_dump specific index PHP throws warning (good).

$a = [
    'unset_me',
    'leave_me',
    'whatever',
];

unset($a['unset_me']);

var_dump($a);
/**
array(3) {
  [0]=>
  string(8) "unset_me"
  [1]=>
  string(8) "leave_me"
  [2]=>
  string(8) "whatever
*/
var_dump($a['unset_me']); // Undefined index: unset_me

Question is why php behave like this and how to remove index properly?


Solution

  • You can try this with array_search -

    unset($a[array_search('unset_me', $a)]);
    

    If needed then add the checks like -

    if(array_search('unset_me', $a) !== false) {
        unset($a[array_search('unset_me', $a)]);
    }
    

    Demo