Deleting an element from an array in PHP

后端 未结 30 3273
时光说笑
时光说笑 2020-11-21 05:55

Is there an easy way to delete an element from an array using PHP, such that foreach ($array) no longer includes that element?

I thought that setting it

30条回答
  •  说谎
    说谎 (楼主)
    2020-11-21 06:24

    It should be noted that unset() will keep indexes untouched, which is what you'd expect when using string indexes (array as hashtable), but can be quite surprising when dealing with integer indexed arrays:

    $array = array(0, 1, 2, 3);
    unset($array[2]);
    var_dump($array);
    /* array(3) {
      [0]=>
      int(0)
      [1]=>
      int(1)
      [3]=>
      int(3)
    } */
    
    $array = array(0, 1, 2, 3);
    array_splice($array, 2, 1);
    var_dump($array);
    /* array(3) {
      [0]=>
      int(0)
      [1]=>
      int(1)
      [2]=>
      int(3)
    } */
    

    So array_splice() can be used if you'd like to normalize your integer keys. Another option is using array_values() after unset():

    $array = array(0, 1, 2, 3);
    
    unset($array[2]);
    $array = array_values($array);
    var_dump($array);
    /* array(3) {
      [0]=>
      int(0)
      [1]=>
      int(1)
      [2]=>
      int(3)
    } */
    

提交回复
热议问题