PHP中删除元素 unset 、 array_splice

unset

unset释放或删除给定的变量
可以销毁数字

$a = 5;
echo $a;
echo "
"; unset($a);//释放(销毁)变量 echo $a;

输出结果:5
报错(释放变量,内存被收回)

可以销毁字符串

$a = '张三';
echo $a;
echo "
"; unset($a);//释放(销毁)变量 echo $a;

输出结果:张三
报错(释放变量,内存被收回)

也可以销毁数组


$a = array('张三','李四','王五');
print_r($a);
echo "
"; unset($a); print_r($a);

输出结果:Array([0] => 张三[1] => 李四[2] => 王五)

销毁数组中的一个元素,需指定键名

$a = array('张三','李四','王五');
print_r($a);
echo "
"; unset($a[1]);//输出指定的元素 print_r($a);

输出结果:Array([0] => 张三[1] => 李四[2] => 王五)
Array([0] => 张三[2] => 王五)

输出元素中带键名的元素

$a = array('a01'=>'张三','a02'=>'李四','a03'=>'王五');
print_r($a);
echo "
"; unset($a['a02']);//输出指定的元素 print_r($a);

输出结果:Array([a01] => 张三[a02] => 李四[a03] => 王五)
Array([a01] => 张三[a03] => 王五)

二维数组删除

删除前

$arr = array();
$arr[1001] = array(1001,'张三','男',20);
$arr[1002] = array(1002,'李四','男',20);
$arr[1003] = array(1003,'王五','男',20);  

echo '
';
print_r($arr);
echo '
';

输出结果:Array(
[1001] => Array
(
[0] => 1001
[1] => 张三
[2] => 男
[3] => 20
)
[1002] => Array
(
[0] => 1002
[1] => 李四
[2] => 男
[3] => 20
)
[1003] => Array
(
[0] => 1003
[1] => 王五
[2] => 男
[3] => 20
)
)

删除后

unset($arr[1002]);

输出结果:Array(
[1001] => Array
(
[0] => 1001
[1] => 张三
[2] => 男
[3] => 20
)
[1003] => Array
(
[0] => 1003
[1] => 王五
[2] => 男
[3] => 20
)
)

删除也可以用array_splice(把数组中的一部分去掉并用其它值代替)

array_splice

array_splice(array &$input,int %offset|,int $length = 0|,mixed $replacement ||)
input:输入的数组
offset:如果offset为正,则从input数组中该值指定的偏移量开始移除。如果offset为负,则从input末尾倒数该值指定的偏移量开始移除。
length:如果省略length,则移除数组中从offset到结尾的所有部分。如果指定了length并且为正值,则移除这么多单元。如果制定了length并且为负值,则移除从offset到数组末尾倒数length为止中间所有的单元。

$a = array('张三','李四','王五');
print_r($a);
echo "
"; unset($a[1]);//输出指定的元素 print_r($a);

输出结果:Array([0] => 张三[1] => 李四[2] => 王五)
Array([0] => 张三[2] => 王五)

array_splice($a,1,1);

输出结果:Array([0] => 张三[1] => 李四[2] => 王五)
Array([0] => 张三[1] => 王五)
注:第一个1,索引号为1
第二个1,删除一个

两者区别:后边的索引号会根据删除的元素进行变化

你可能感兴趣的:(PHP中删除元素 unset 、 array_splice)