1
foreach($array as $key => $value)
if (strlen($value) == 0)
unset($array[$key]);
这么多内置的数组函数,那么有没有这样做?建立在PHP功能,这样做?
foreach($array as $key => $value)
if (strlen($value) == 0)
unset($array[$key]);
这么多内置的数组函数,那么有没有这样做?建立在PHP功能,这样做?
我想你可以使用array_filter
,做那种事(引用):
迭代在每个值的输入 阵列将它们传递给回调 功能。
如果回调函数 返回true
,则将当前值从 输入返回到结果 数组中。
保存数组键。
和:
如果没有回调被提供时,所有 条目输入的等于
FALSE
(见 converting to boolean)将 移除。
例如,使用类似的代码,这部分:
$array = array(
'test' => 'glop',
'a' => 123,
'b' => '',
'c' => 'blah',
'd' => '',
);
$array = array_filter($array);
var_dump($array);
你会得到以下输出:
array
'test' => string 'glop' (length=4)
'a' => int 123
'c' => string 'blah' (length=4)
我没用过一个回调函数,这里 - 这意味着所有的“空”值已被删除 ;;如果我以0
作为它的值,那么它会被删除......
根据你的情况,这是可以接受的或不是......所以,也许你更喜欢使用特定的回调函数来完成你想要的功能,并且更好地控制被滤除的内容?
而这里的一个回调函数的例子:
$array = array(
'test' => 'glop',
'a' => 0,
'b' => '',
'c' => 'blah',
'd' => '',
);
function my_function($a) {
if ($a === '') {
return false;
}
return true;
}
$array = array_filter($array, 'my_function');
var_dump($array);
(注意数组中的'a' => 0
线)
而且我们现在得到:
array
'test' => string 'glop' (length=4)
'a' => int 0
'c' => string 'blah' (length=4)
即使用回调函数允许我们使用以更清楚地指定应该过滤掉什么(这里,包含完全空字符串的行,没有类型转换)。
您应该定义“this”的含义。 – pixeline 2010-02-27 09:37:26
[根据数组的值从数组中删除元素]的可能重复(http://stackoverflow.com/questions/2169669/remove-element-from-array-based-on-its-value) – Gordon 2011-11-17 10:00:18