我有一个没有赋值的简单数组:
Array
(
[field1] =>
[field2] =>
)
然后做类似的事情:
$result = array();
foreach ($array as $val) {
array_push($result, $val);
}
$data = implode("::", $result);
我最终得到了:
::
那么如果数组值为空,如何防止内爆生成分隔符呢? 如果我至少分配了一个值:
Array
(
[field1] => "hello"
[field2] =>
)
然后内爆使它的工作正常。
答案 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)