在php开发中,数组是最常用的数据结构之一,经常会遇到需要删除数组中某一行(即某个指定元素)的需求,很多开发者不清楚具体的实现方式,下面详细介绍两种常用的处理方法。

方法一:使用unset函数直接删除指定元素
unset是php中用于销毁指定变量的函数,也可以直接用来删除数组中的某个元素,只需要传入数组名和对应的键名即可。
这种方法的优点是操作简单,执行效率高,但是删除元素后,原数组的键名不会自动重新排列,会保留原来的键名结构。
示例代码如下:
<?php // 定义一个索引数组 $arr = ['苹果', '香蕉', '橘子', '葡萄', '西瓜']; // 删除键名为2的元素,也就是第三行内容 unset($arr[2]); // 打印删除后的数组 print_r($arr); ?>
上述代码执行后,输出结果如下:
Array
(
[0] => 苹果
[1] => 香蕉
[3] => 葡萄
[4] => 西瓜
)
可以看到,原来的键名2被删除后,后面的键名3、4并没有自动往前移动,数组的键名是不连续的。
方法二:unset删除后配合array_values重建键名
如果希望删除元素后,数组的键名能够重新从0开始连续排列,可以在使用unset删除元素后,调用array_values函数对数组进行重建键名操作。
array_values函数会返回数组中所有的值,并给这些值重新分配从0开始的数字键名,忽略原来的键名。
示例代码如下:
<?php // 定义一个索引数组 $arr = ['苹果', '香蕉', '橘子', '葡萄', '西瓜']; // 删除键名为2的元素 unset($arr[2]); // 重建数组键名 $newArr = array_values($arr); // 打印重建后的数组 print_r($newArr); ?>
上述代码执行后,输出结果如下:
Array
(
[0] => 苹果
[1] => 香蕉
[2] => 葡萄
[3] => 西瓜
)
此时数组的键名已经重新从0开始连续排列,符合大多数场景下索引数组的使用需求。
两种方法的适用场景对比
下面通过表格对比两种方法的差异和适用场景:
| 方法 | 键名变化 | 适用场景 |
|---|---|---|
| 仅使用unset删除 | 保留原键名,删除位置键名缺失 | 不需要连续键名,或者后续会遍历所有值不关心键名的场景 |
| unset+array_values | 键名重新从0连续排列 | 需要索引数组键名连续,后续可能通过连续键名访问元素的场景 |
关联数组的删除注意事项
如果是关联数组,使用unset删除指定键名的元素后,同样不会重建键名,但是关联数组本身不需要连续的数字键名,所以一般不需要调用array_values函数。
示例代码如下:
<?php // 定义一个关联数组 $user = ['name' => '张三', 'age' => 20, 'city' => '北京', 'job' => '程序员']; // 删除city键对应的元素 unset($user['city']); // 打印删除后的数组 print_r($user); ?>
执行后输出的关联数组会直接去掉city对应的键值对,其他键名保持不变,符合关联数组的使用逻辑。
总结
php数组删除其中某一行的核心实现就是使用unset函数,根据是否需要连续键名,选择是否配合array_values函数重建键名即可。开发者可以根据实际的业务场景选择合适的方法,快速完成数组删除操作。
php数组unsetarray_values数组删除元素重建键名修改时间:2026-06-21 00:54:30