2011-11-27 87 views
2

如何从数组中删除空数据?php filter empty array

var_dump($array); 

array(1) 
    { [0]=>  
    array(4) 
    { 
    [0]=> string(0) "" 
    [1]=> string(3) "car" 
    [2]=> string(4) "bike" 
    [3]=> string(1) " " 
    } 
    } 

我加array_filter($array);什么都没有删除。所以如何删除""" "或者如果在数组中有更多的空space

回答

2

我想你想实现这一行为:

脚本将输出:

Array 
(
    [0] => Array 
     (
      [0] => foo 
      [2] => bar 
     ) 

) 

,对吗?

+0

这非常详尽。泛型足以允许嵌套数组,但它仍然会保留数字1,同时删除字符串'0'。 – GolezTrol

+1

这个例子显示了一个嵌套数组。 –

+0

你说得对。 :) – GolezTrol

1

创建从输入元素修剪空白的回调函数,返回TRUE如果修剪元素不为空:

$array = array_filter($array, function($x) { 
    $x = trim($x); 
    return !empty($x); 
}); 

// Example: 
$array = array(1,2,"",3," ",5); 

print_r($array); 
Array 
(
    [0] => 1 
    [1] => 2 
    [3] => 3 
    [5] => 5 
) 
+0

不完全正确的:http://www.ideone.com/m3lJp – codaddict

11

[编辑]

这将会对一些确实失败值如'0'和非字符串值。

更彻底的功能是:

$array = array_filter($array, function($a){ 
    return is_string($a) && trim($a) !== ""; 
}); 

这将只返回符合您的要求的字符串。

+1

没有,修剪不为多个空格 – ajreal

+1

你有什么工作意思?是的,它确实。 – GolezTrol

+0

我的坏(15个字符) – ajreal

1

array_filter()商务部:

$entry = array(
      0 => 'foo', 
      1 => false, 
      2 => -1, 
      3 => null, 
      4 => '' 
     ); 

print_r(array_filter($entry)); //Array ([0] => foo [2] => -1) 
0
// removes all NULL, FALSE and Empty Strings but leaves 0 (zero) values 
$result = array_filter($array, 'strlen');