如何从 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 中的数组中删除值?的主要内容,如果未能解决你的问题,请参考以下文章