PHP 简明教程

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);