[stackoverflow翻译] 删除数组中的元素——PHP
2017-02-23 13:57
218 查看
问:
有没有简便的方法可以从php数组中删除元素,使用foreach ($array)也不会遍历到被删的元素?我原以为将元素的值设为null可以,但事实显然并非如此.
答:
删除一个数组元素有多个方法,有的方法在一些特殊的情况下会比其他的方法更有用.删除一个数组元素
如果你仅仅想删除一个数组元素,你可以交替使用unset()或
array_splice().如果你想删除一个数组元素但只知道他的 value 而不知道 key ,你可以使用
array_search()去获得key.
unset()
方法
需知使用unset()后,数组不会重建索引.如果你想要重建索引可以在
unset()之后使用
array_values()此函数将把所有的key转变成从0开始的数字的枚举类型.代码:
<?php $array = array(0 => "a", 1 => "b", 2 => "c"); unset($array[1]); //↑ 你想要删除元素的key ?>输出:
Array ( [0] => a [2] => c )
array_splice()
方法
如果你使用 array_splice()方法, key 的索引将会被自动重建, 但组合的key(associative keys)不会被改变,相反
array_values()方法会将所有的key转变成枚举的数字型key.
array_splice()需要偏移量作为第二个参数,而不是key.代码:
<?php $array = array(0 => "a", 1 => "b", 2 => "c"); array_splice($array, 1, 1); //↑ Offset which you want to delete ?>输出:
Array ( [0] => a [1] => c )
array_splice()和
unset()一样通过引用来操作数组, 这意味着你不想指定返回值this means you don't want to assign the return values of those functions back to the array.
删除多个数组元素
如果你想删除多个数组元素,且不多次调用unset()或
array_splice().在知道元素的value或key的情况下可以分别使用
array_diff()或
array_diff_key()方法.
array_diff()
方法
在知道欲删除元素的value时当使用此方法,使用后不重置数组索引.代码:<?php $array = array(0 => "a", 1 => "b", 2 => "c"); $array = array_diff($array, ["a", "c"]); //└────────┘→ 要删除元素的value ?>输出:
Array ( [1] => b )
array_diff_key()
方法
在知道欲删除元素的key时当使用此方法,使用后也不重置数组索引.请确保在第二个参数传入的是欲删除元素的key. 否则必须使用array_flip()来反转数组.代码:
<?php $array = array(0 => "a", 1 => "b", 2 => "c"); $array = array_diff_key($array, [0 => "xy", "2" => "xy"]); //↑ ↑
要删除元素的key
?>输出:
Array ( [1] => b )如果你想用
unset()或
array_splice()删除具有相同value的多个元素你可以使用
array_keys()来获取那个特殊value的所有key.问题链接:http://stackoverflow.com/questions/369602/delete-an-element-from-an-array
相关文章推荐
- php 删除数组的最后一个元素 和第一个元素
- PHP,关联数组,根据元素值删除元素
- PHP删除数组中特定元素的两种方法
- 如何正确实现PHP删除数组重复元素
- PHP删除数组中的特定元素的代码
- php数组函数序列之array_pop() - 删除数组中的最后一个元素
- php的数组的元素增加和删除
- PHP删除数组中特定元素
- (转载)PHP删除数组中的特定元素的代码
- 深入学习PHP数组删除元素方法
- php数组中删除元素
- php 数组 添加元素、删除元素
- PHP删除数组中的特定元素的代码
- PHP删除数组中特定元素的两种方法
- PHP删除数组中的某个元素
- php数组中删除元素
- PHP删除数组中的特定元素
- php数组中删除元素
- PHP数组删除元素
- PHP删除数组中特定元素的两种方法