我有一个没有分配值的简单数组:
Array
(
[field1] =>
[field2] =>
)
Run Code Online (Sandbox Code Playgroud)
然后做类似的事情:
$result = array();
foreach ($array as $val) {
array_push($result, $val);
}
$data = implode("::", $result);
Run Code Online (Sandbox Code Playgroud)
我最终得到:
::
Run Code Online (Sandbox Code Playgroud)
那么,如果数组值为空,如何防止内爆生成分隔符呢?如果我至少分配了一个值:
Array
(
[field1] => "hello"
[field2] =>
)
Run Code Online (Sandbox Code Playgroud)
然后内爆就可以正常工作了。
用于array_filter()在实际内爆数组之前过滤数组(删除空元素)。
根据文档array_filter():
如果未提供回调,则数组中所有等于 FALSE 的条目(请参阅转换为布尔值)将被删除。
这意味着(如果您仅处理字符串),“”或“0”将被删除。如果 0 是您的 中的有效字符串$result,则使用自定义回调函数:
$result = array_filter($result, function($val) {
return $val !== '';
});
Run Code Online (Sandbox Code Playgroud)
最终代码:
$result = array(
'field1' => '',
'field2' => ''
);
$result = array_filter($result);
$data = implode("::", $result);
Run Code Online (Sandbox Code Playgroud)
您可以在此处查看它的实际效果。
编辑:另一种方法是首先防止空值进入数组:
$result = array();
foreach ($array as $val) {
if ( $val !== '' ) {
array_push($result, $val);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8813 次 |
| 最近记录: |