2011-11-27 134 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');