PHP 删除数组元素
1. PHP 删除数组元素
在 PHP 中,您可以根据不同的业务需求,使用多种不同的函数来删除或移除数组中的项目:
array_splice()- 从指定的起始位置和长度移除数组的一部分。unset()- 删除与指定键名或索引关联的特定元素。array_diff()- 从关联数组中移除指定的项(通过比对值)。array_pop()- 移除并弹出数组的最后一个元素。array_shift()- 移除并移出数组的第一个元素。
2. PHP array_splice() 函数
使用 array_splice() 函数时,您可以指定具体的索引(从哪里开始)以及要删除的项目数量。
优势: 在删除操作完成后,数组会自动重新建立索引(从 0 开始递增)。
示例
删除数组的第二个项目(索引为 1):
$cars = array("Volvo", "BMW", "Toyota");
array_splice($cars, 1, 1);
var_dump($cars);删除多个项目array_splice() 函数接受一个长度参数,允许您精确指定要删除的项目总数。
示例
从第二个项目(索引 1)开始,连续删除 2 个项目:
$cars = array("Volvo", "BMW", "Toyota");
array_splice($cars, 1, 2);
var_dump($cars);3. PHP unset() 函数
您也可以使用内置的 unset() 函数来删除现有的数组项目。
注意(极易踩坑): unset() 函数不会重新索引数组。这意味着如果您删除了索引 1 处的元素,其余的元素(例如索引 0、2、3)将保持其原始索引,从而导致索引序列中出现“数字断层(gap)”。
示例
删除第二个项目:
$cars = array("Volvo", "BMW", "Toyota");
unset($cars[1]);
var_dump($cars);删除多个项目unset() 函数可以接受无限数量的参数,因此非常适合一次性删除多个特定的数组项:
示例
同时删除第一个和第二个项目:
$cars = array("Volvo", "BMW", "Toyota");
unset($cars[0], $cars[1]);
var_dump($cars);4. 从关联数组中删除元素
要从关联数组中删除项目,最直接的方法同样是使用 unset() 函数,并直接指定您要删除的元素的键名。
示例
删除键名为 "model" 的元素:
$cars = array("brand" => "Ford", "model" => "Mustang", "year" => 1964);
unset($cars["model"]);
var_dump($cars);5. PHP array_diff() 函数
您还可以使用 array_diff() 函数来删除关联数组中的项目。此函数会返回一个移除了指定项的全新数组,而不会修改原数组。
示例
创建一个不包含 "Mustang" 和 "1964" 的新数组:
$cars = array("brand" => "Ford", "model" => "Mustang", "year" => 1964);
$newarray = array_diff($cars, ["Mustang", 1964]);
var_dump($newarray);注意: array_diff() 函数是根据值(Values)来进行对比和删除的,而不是根据键名。
6. PHP array_pop() - 删除最后一个元素
array_pop() 函数专门用于移除并返回数组的最后一个元素。
示例
$cars = array("Volvo", "BMW", "Toyota");
array_pop($cars);
var_dump($cars);7. PHP array_shift() - 删除第一个元素
array_shift() 函数专门用于移除并返回数组的第一个元素,并且会将剩余的所有数字索引向前移动一位。
示例
$cars = array("Volvo", "BMW", "Toyota");
array_shift($cars);
var_dump($cars);