Php内爆空数组

时间:2016-08-17 02:46:03

标签: php implode

我有一个没有赋值的简单数组:

Array
(
    [field1] => 
    [field2] => 
)

然后做类似的事情:

$result = array();
foreach ($array as $val) {
   array_push($result, $val);
}

$data = implode("::", $result);

我最终得到了:

::

那么如果数组值为空,如何防止内爆生成分隔符呢? 如果我至少分配了一个值:

Array
(
    [field1] => "hello"
    [field2] => 
)

然后内爆使它的工作正常。

2 个答案:

答案 0 :(得分:2)

在实际内爆阵列之前,使用array_filter()过滤数组(删除空元素)。

根据array_filter()的文档:

  

如果没有提供回调,则将删除数组的所有条目等于FALSE(请参阅转换为布尔值)。

这意味着(如果您只处理字符串),''或者' 0' 0将被删除。如果0是$result中的有效字符串,则使用自定义回调函数:

$result = array_filter($result, function($val) {
    return $val !== '';
});

最终代码:

$result = array(
    'field1' => '',
    'field2' => ''
);

$result = array_filter($result);

$data = implode("::", $result);

您可以在行动here中看到它。

编辑:另一种方法是,首先防止空值进入你的数组:

$result = array();
foreach ($array as $val) {
   if ( $val !== '' ) {
       array_push($result, $val);
   }
}

答案 1 :(得分:1)

您可以使用 array_filter() ,例如在您的情况下:

implode( ':', array_filter( $result ) );

这将在插入数据之前对其进行过滤。