php中删除数组元素是非常的简单的,主要是unset,array_splice,但是关于两者有,长时间混用,有的时候竟然分不出区别。今天特意总结一下,增加记忆,便于使用。

很多地方都这样区别unset,array_splice

array_splice()函数删除的话,数组的索引值也变化了。
unset()函数删除的话,数组的索引值没有变化。

其实我觉得这样区分是有前提的。


1. $arr0=array('a','b','c','d','f');  
2. $arr1=array(
3. 'name'=>'lidequan',
4. 'tel'=>'131****1234',
5. 'height'=>'175',
6. 'weight'=>'65'
7. );
8. $arr2=array(
9. 'lidequan',
10. '131****1234',
11. '175',
12. '65'
13. );
14. $arr3=array(
15. 'a'=>'lidequan',
16. '131****1234',
17. '175',
18. '1705',
19. 'b'=>'65'
20. );
21. //1. array_splice($arr0,2,1);
22. //2. unset($arr0[2]);
23.
24. //3. array_splice($arr1,2,1);
25. //4. unset($arr1['height']);
26.
27. //5. array_splice($arr2,2,1);
28. //6. unset($arr1[4]);
29.
30. //7.array_splice($arr3,2,1);

1和2执行结果不一样

1执行结果:

1. array (size=4)  
2. 'a' (length=1)
3. 'b' (length=1)
4. 'd' (length=1)
5. 'f' (length=1)

2执行结果:


3和4的执行结果是一样一样的

1. array (size=4)  
2. 'a' (length=1)
3. 'b' (length=1)
4. 'd' (length=1)
5. 'f' (length=1)


5和6的执行结果不样的

1. array (size=3)  
2. 'name' => string 'lidequan' (length=8)
3. 'tel' => string '131****1234' (length=11)
4. 'weight' => string '65' (length=2)

5执行的结果如下

6执行的结果如下:

1. array (size=3)  
2. 'lidequan' (length=8)
3. '131****1234' (length=11)
4. '65' (length=2)


    1. array (size=3)  
    2. 'lidequan' (length=8)
    3. '131****1234' (length=11)
    4. '65' (length=2)

    7的执行结果如下:


      1. array (size=4)  
      2. 'a' => string 'lidequan' (length=8)
      3. '131****1234' (length=11)
      4. '1705' (length=4)
      5. 'b' => string '65' (length=2)


      总结:这说明,unset,array_splice,在删除数组元素,数组索引值变化原理在于

      unset函数是按照数组键值进行删除数组里面的元素,删除之后,不再对数组进行任何操作。

      array_splice函数删除元素是依据元素在数组中的次序(次序从0开始算起),进行删除元素,删除元素之后,如果数组中存在键值为整数的元素,将这些元素,依据其在数组中次序大小,将其键值从0~n依次更新。

      补充:

      关于数组添加删除元素操作

      1.从头开始添加元素 

      array_unshift($a,"blue")

      2.从尾添加元素   array_push()

      array_push($a,"blue")
      $a[]='blue';


      3.从头开始删除元素

      array_unshift($a)

      4.从尾开始删除元素

      array_pop($a)

      5.删除指定位置的元素

      array_splice($a,2,1)


      6.删除指定键值的元素

      unset($a[2])