从数组中删除元素(PHP)

时间:2010-05-11 16:09:57

标签: php

我想从PHP数组中删除一个元素(并缩小数组大小)。只是看看PHP文档,似乎可以使用array_slice()和array_merge()

来完成

所以我猜测(在我的脑海中),array_merge()和array_slice的某些组合将起作用。但是,array_slice()需要一个索引(而不是一个键),因此我不确定如何快速拼凑这些函数以获得解决方案。

之前有没有人实现过这样的功能?我敢肯定它一定只有几行,但我不知道怎么能绕过它(那是其中一天)......

实际上,我在写这个问题时想出了这个俗气的黑客......

function remove_from_array(array $in, value) {
   return array_diff($in, (array)$value);
}
太难看了?或者它会起作用(没有任何令人震惊的副作用)?

6 个答案:

答案 0 :(得分:6)

此功能已存在;看看unset

http://php.net/manual/en/function.unset.php


$a = array('foo' => 'bar', 'bar' => 'gork');
unset($a['bar']);
print_r($a);

输出将是:

array(
[foo] => bar
)

答案 1 :(得分:1)

array_filter函数使用回调函数只从数组中选择所需的值。

答案 2 :(得分:1)

你想要一个未设定值。循环遍历数组并按值取消键。

答案 3 :(得分:0)

foreach($array as $key => $value) {
    if($value == "" || $value == " " || is_null($value)) {
        unset($array[$key]);
    }
}

/*
and if you want to create a new array with the keys reordered accordingly...
*/
$new_array = array_values($array);

答案 4 :(得分:0)

unset($my_array['element']);

不行吗?

答案 5 :(得分:0)

此代码可以由单个array_filter($ arr)调用替换