2015-09-05 64 views
1

我有這個數組,我想擺脫那些沒有價值的索引,所以例如在索引[0]我想擺脫[0]和[4] ]所以我想有一個3值數組等等......清空的空間數組

Array 
(
    [0] => Array 
     (
      [0] => 
      [1] => 
      [2] => 7 
      [3] => 
      [4] => 8 
      [5] => 
     ) 

    [1] => Array 
     (
      [0] => 
      [1] => 
      [2] => 9 
      [3] => 10 
      [4] => 
     ) 

    [2] => Array 
     (
      [0] => 
      [1] => 11 
      [2] => 12 
      [3] => 
     ) 

) 
+0

也許[array_filter](http://php.net/manual/en/function.array-filter.php)? – bytesized

+0

另外,你想保留鑰匙,還是移動它們?也就是說,操作之後'element [0] [1]'是1還是2? – bytesized

回答

0

這是一個很好的array_filter用例。檢查!empty()允許您刪除空字符串和空值。

$filter_func = function($input) { 
    $output = []; 
    foreach ($input as $set) { 
     $output[] = array_values(
      array_filter($set, function($element) { 
       return !empty($element); 
      }) 
     ); 
    } 
    return $output; 
} 
+0

它的工作,但我怎麼能設置內部值爲[0]或[1]而不是前面的數組值? 陣列 ( [0] =>數組 ( [2] => 7 [4] => 8 ) [1] =>數組 ( [2] => 9 [3] => 10 ) [2] =>數組 ( [1] => 11 [2] => 12 ) ) –

+0

我剛剛更新我的溶液。你會用array_values包裝array_filter調用。 – curtis1000

+0

非常感謝你!它確實有效! –

1
foreach ($array as $key=>$value) { 
    if ($value == '') { unset($array[$key]); } 
} 

應該這樣做。

0

您可以使用array_filter()

$my_array = array_filter($my_array); 

如果你需要 「重新索引」 之後,你可以運行$my_array = array_values($my_array)

例子:

$a = array(); 
$a[] = ''; 
$a[] = 1; 
$a[] = null; 
$a[] = 2; 
$a[] = 3; 

$a = array_filter($a); 
print_r($a); 

輸出:

Array 
(
    [1] => 1 
    [3] => 2 
    [4] => 3 
) 
+0

我已經嘗試過這一個它沒有爲我工作 –

+1

哦。以及array_filter的作品,但我沒有意識到你正在運行一個多維數組,因爲這不會在更深的數組級別內工作,除非你手動執行它們。 – timothymarois