从数组中删除空值 - 或等效

时间:2012-04-02 19:35:46

标签: php arrays

我想要显示一些变量,其中一些是空的。有些变量在我想要保留的空间中。我想将它们显示为逗号分隔列表。如果我按顺序回显它们var1, var2,.var6,.var10,我会在有空的情况下得到额外的逗号。听起来不像删除额外的逗号那么难,但我的想法没有奏效。

由于我有很多很多这样的,我不想每个条件打印 - 允许放置逗号的第一个或最后一个或迭代地用1个逗号或复杂的东西替换多个逗号...即我我希望找到一种简单的可重复方法,只要出现这种方法就可以使用。

一个想法是将字符串转换为数组并删除空值。我可以删除空格并回显,可以毫无问题地打印var1,var2,,,var8,,,。但是,我找不到删除逗号的方法,即数组中的空值。

我试过了:

$array = "one,two,,,six,,,ten";
$array= array_filter($array);
foreach($array as $val) {
echo $val;}}
foreach($array as $val) {
if ($val!=""&$val!=NULL) {
echo $val;}}
}

它没有摆脱逗号。没有幸运在网上提出以下建议:

array_flip(array_flip($array); or
$array = array_values($array); or

可能是我的错字,但会感谢经验丰富的任何建议。

1 个答案:

答案 0 :(得分:10)

你无法删除的原因是因为你没有使用有效的数组..要使用有效的数组,你需要这样做:

$array = "one,two,,,six,,,ten";
$array = explode(",",$array);
$array= array_filter($array);

var_dump($array);

输出

array
  0 => string 'one' (length=3)
  1 => string 'two' (length=3)
  4 => string 'six' (length=3)
  7 => string 'ten' (length=3)

要转换回字符串,请使用implode http://php.net/manual/en/function.implode.php

    var_dump(implode(",", $array))

输出

string 'one,two,six,ten' (length=15)

由于 :)