PHP删除数组中指定的元素

删除数组元素有不同的方法,可以根据具体的需要选择不同的方法。

1.unset() 方法

注意:当您使用unset()方法时,数组Key值不会更改。 如果要重新编号键,您可以在unset()之后使用array_values(),它将所有键转换为从0开始的数值枚举键。

<?php

    $array = array(0 => "a", 1 => "b", 2 => "c");
    unset($array[1]);
               //↑ 需要删除的键
?>

输出

Array (
    [0] => a
    [2] => c
)

2.array_splice() 方法

注意:如果使用array_splice(),那么键将被自动重新建立索引,但是关联键不会改变,而是将array_values()转换成数字键。

<?php

    $array = array(0 => "a", 1 => "b", 2 => "c");
    array_splice($array, 1, 1);
                       //↑ 需要删除的键

?>

输出

Array (
    [0] => a
    [1] => c
)

array_splice()与unset()相同,通过引用获取数组,这意味着执行代码后将直接改变原数组数据。

删除数组中多个元素

如果要删除多个数组元素,又不想多次调用unset()或array_splice(),则可以使用函数array_diff()或array_diff_key(),具体取决于你是否知道想删除元素的值或键 。

1.array_diff() 方法

如果你知道要删除的数组元素的值,那么可以使用array_diff()。 与unset()方法一样,它不会重新索引数组的键。

<?php

    $array = array(0 => "a", 1 => "b", 2 => "c");
    $array = array_diff($array, ["a", "c"]);
                              //└────────┘→ 想删除的值

?>

输出

Array (
    [1] => b
)

2.array_diff_key() 方法

如果您知道要删除的元素的键,则使用array_diff_key()。 在这里,您必须确保将Key作为第二个参数中的键传递,而不是值。 否则你必须用array_flip()来翻转数组。 而且这里的键也不会重新索引。

<?php

    $array = array(0 => "a", 1 => "b", 2 => "c");
    $array = array_diff_key($array, [0 => "xy", "2" => "xy"]);
                                   //↑           ↑ 想删除的数组的键
?>

输出

Array (
    [1] => b
)

另外,如果要使用unset()或array_splice()删除具有相同值的多个元素,可以使用array_keys()获取特定值的所有键,然后删除所有元素。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据