2011-04-08 93 views
1

我想從陣列中刪除空元素。我有一個$ _POST-String,它通過explode()設置爲一個數組。然後,我使用循環刪除空的元素。但那不行。我也試過array_filter(),但沒有成功。你可以幫我嗎?見代碼如下:無法從陣列中刪除空元素

$cluster = explode("\n", $_POST[$nr]); 

    print_r ($cluster); 
    echo "<br>"; 

    for ($i=0 ; $i<=count($cluster);$i++) 
    { 
     if ($cluster[$i] == '') 
     { 
     unset ($cluster[$i]); 
     } 
    } 

    print_r ($cluster); 
    echo "<br>"; 

結果:

Array ([0] => Titel1 [1] => Titel2 [2] => Titel3 [3] => [4] => [5] =>) 

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

我們不能真正看到你在做什麼空元素 – 2011-04-08 19:02:06

回答

1

問題IST該for循環條件得到在每次運行時評估。

這意味着count(...)將被調用多次,並且每一次陣列收縮。

正確的方式做,這就是:

$test = explode("/","this/is/example///"); 
print_r($test); 
$arrayElements = count($test); 
for($i=0;$i<$arrayElements;$i++) 
    if(empty($test[$i]) 
     unset($test[$i]); 

print_r($test); 

沒有一個額外的變量的另一種方式將倒數:

$test = explode("/","this/is/example///"); 
print_r($test); 
for($i=count($test)-1;$i>=0;$i--) 
    if(empty($test[$i]) 
     unset($test[$i]); 

print_r($test); 
+0

謝謝。 我現在已經用trim&a while循環解決了這個問題 $ i = 0; $ v = count($ cluster); 而($ I <$ V){ 如果(修剪($簇[$ i]於)== ''){ 未設置($簇[$ I]); } $ i ++; } – Crayl 2011-04-08 19:15:25

1

如果你改變:

for ($i=0 ; $i<=count($cluster);$i++) { if ($cluster[$i] == '') { unset ($cluster[$i]); } } 

for ($i=0 ; $i<=count($cluster);$i++) { if (trim($cluster[$i]) == '') { unset ($cluster[$i]); } } 
+0

真棒。感謝您的快速回答! – Crayl 2011-04-08 19:02:56

+0

結果與此: Array([0] => Test1 [1] => Test2 [2] => [3] => [0123]]>
Array([0] => Test1 [1] => Test2 [5] =>) – Crayl 2011-04-08 19:03:12

4

空元素可以很容易地array_filter刪除:

$array = array_filter($array); 

實施例:

$array = array('item_1' => 'hello', 'item_2' => '', 'item_3' => 'world', 'item_4' => ''); 
$array = array_filter($array); 
/* 
Array 
(
    [item_1] => hello 
    [item_3] => world 
) 
*/ 
+0

閱讀他的問題,他說他已經嘗試了 – teuneboon 2011-04-08 19:02:03

+0

@teuneboon:他沒有發佈代碼,因此他/她可能犯了一個錯誤。 – 2011-04-08 19:03:29

+0

很酷,我即將發佈'array_filter(函數($ x){return $ x;},$ _POST [$ nr]);'但我沒有意識到有一個'默認'的功能,如果整數0是 – 2011-04-08 19:03:38