2011-04-08 58 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