如何从 PHP 中的数组中删除值?

Posted

技术标签:

【中文标题】如何从 PHP 中的数组中删除值?【英文标题】:How to remove values from an array in PHP? 【发布时间】:2010-11-20 06:19:23 【问题描述】:

是否有 php 函数可以从数组中删除某些数组元素?

例如,我有一个包含值的数组 (A) 和另一个需要从中删除值的数组 (B)。

要从数组B 中删除数组A 中的值吗?

【问题讨论】:

我忍不住想知道同样的问题 +1 【参考方案1】:

使用array_diff()

$new_array = array_diff($arrayB, $arrayA);

将返回一个数组,其中包含$arrayB$arrayA 中的所有元素。

要对关联数组执行此操作,请使用 array_diff_assoc()

要删除单个值,请使用:

unset($array[$key]);

你当然可以循环它来做数组函数的等价物,但这没有意义。

【讨论】:

【参考方案2】:

这取决于您所说的“删除”。

您可以使用 unset() 函数从数组中删除键,但这不会重新索引它。例如,如果您有:

$a = array(1 => 'one', 2 => 'two', 3 => 'three');

然后你打电话

unset($a[2]);

你最终会得到类似的东西

(1 => 'one', 3 => 'three');

如果您需要对数组进行顺序索引,可以将未设置的数组输入 array_values(),这将返回一个具有顺序索引键的新数组。

回到您原来的场景,正如其他人所观察到的,array_diff 将为您完成这项工作,但请注意,它不会进行索引检查。如果需要,请改用 array_diff_assoc。

【讨论】:

【参考方案3】:

array_diff 函数将为您执行此操作。

【讨论】:

【参考方案4】:
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);

print_r($result);

【讨论】:

【参考方案5】:

我来到这篇文章的目的是寻找一种从数组中删除单个值的方法(标题所述)。这是一个直接的方法,假设要删除的值在数组中:

$list = array('foo', 'bar', 'yay', '\o/');
$toremove = 'foo';
unset($list[array_search($toremove, $list)]);

虽然如果要删除的元素不是数组的一部分,这会引发错误。

另一种解决方案,但并未真正优化性能:

$list = array('foo', 'bar', 'yay', '\o/');
$toremove = 'foo';
$list = array_flip($list);
unset($list[$toremove]);
$list = array_flip($list);

无论如何,也许这里的每个人都建议使用 array_diff 创建一个具有单个值的数组更快更有效。

【讨论】:

【参考方案6】:

也许这是一个简单快捷的解决方案。一个简单的重复,可以删除(取消设置)数组中的多个值。

    // Your array
    $list = array("apple", "orange", "strawberry", "lemon", "banana");

    // Initilize what to delete
    $delete_val = array("orange", "lemon", "banana");

    // Search for the array key and unset   
    foreach($delete_val as $key)
        $keyToDelete = array_search($key, $list);
        unset($list[$keyToDelete]);
    

【讨论】:

以上是关于如何从 PHP 中的数组中删除值?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 PHP 中的多维数组中删除重复值

如何从 php 中的 JSON 对象数组中删除值?

如何从 PHP 中的多维数组中删除重复值 [重复]

从php中的数组中删除某些值[重复]

从php中的多维数组中删除重复值

javascript中,知道一个值,如何删除数组中的这个值的元素。