我们删除元素通常用unset()函数
unset
unset()函数--释放给定的变量
语法
void unset ( mixed $var
[, mixed $...
] )
unset() 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。
如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。
我们可以用unset()函数来删除一个变量,如
$a = 5;
echo ($a);
echo '<br>';
unset($a);//释放 (销毁) 变量
echo ($a);
输出结果
5
输出后会有一个警告,是因为我们已经销毁了$a这个变量,释放了这个变量内存,所以会报错
这个函数也可以用于删除一个数组
$a = array('张三','李四','王五');
print_r($a);
echo '<br>';
unset($a);//释放 (销毁) 变量
输出结果
Array ( [0] => 张三 [1] => 李四 [2] => 王五 )
都是上图中的例子删除的是一个数组,如果我们想要删除这个数组中的某个元素,可以写上这个元素的索引号,就可以了
$a = array('张三','李四','王五');
print_r($a);
echo '<br>';
//删除数组中某个元素
unset($a[1]);
输出结果
Array ( [0] => 张三 [2] => 王五
我们根据索引号删除了李四,但是王五的索引号并没有任何的变化,还是2
unset()函数销毁元素后,剩下元素的索引号并不会有任何改变
也可以使用另一个函数来删除元素
array_splice
array_splice — 把数组中的一部分去掉并用其它值取代
说明
array array_splice ( array &$input
, int $offset
[, int $length
= 0 [, mixed $replacement
]] )
把 input
数组中由 offset
和 length
指定的单元去掉,如果提供了 replacement
参数,则用其中的单元取代。
注意 input
中的数字键名不被保留。
参数
input
输入的数组。
offset
如果 offset
为正,则从 input
数组中该值指定的偏移量开始移除。如果 offset
为负,则从 input
末尾倒数该值指定的偏移量开始移除。
length
如果省略 length
,则移除数组中从 offset
到结尾的所有部分。如果指定了 length
并且为正值,则移除这么多单元。如果指定了 length
并且为负值,则移除从 offset
到数组末尾倒数 length
为止中间所有的单元。小窍门:当给出了 replacement
时要移除从 offset
到数组末尾所有单元时,用 count($input) 作为 length
。
replacement
如果给出了 replacement
数组,则被移除的单元被此数组中的单元替代。
如果 offset
和 length
的组合结果是不会移除任何值,则 replacement
数组中的单元将被插入到 offset
指定的位置。 注意替换数组中的键名不保留。
如果用来替换 replacement
只有一个单元,那么不需要给它加上 array(),除非该单元本身就是一个数组、一个对象或者 NULL
。
如下例
$a = array('张三','李四','王五');
print_r($a);
echo '<br>';
array_splice($a, 1,1);
print_r($a);
输出结果
Array ( [0] => 张三 [1] => 李四 [2] => 王五 )
Array ( [0] => 张三 [1] => 王五 )
在删除索引号为一的一个元素后,王五的索引号发生了改变
而在这一句代码array_splice($a, 1,1);中第一个一代表的是元素索引号,第二个1表示删除一个。