Php 内爆空数组
Php implode empty array
我有一个没有赋值的简单数组:
Array
(
[field1] =>
[field2] =>
)
然后做类似的事情:
$result = array();
foreach ($array as $val) {
array_push($result, $val);
}
$data = implode("::", $result);
我最终得到:
::
那么,如果数组值为空,我该如何防止内爆生成分隔符?
如果我至少分配了一个值:
Array
(
[field1] => "hello"
[field2] =>
)
然后内爆就可以了。
在实际分解数组之前使用 array_filter()
过滤数组(删除空元素)。
根据 array_filter()
的文档:
If no callback is supplied, all entries of array equal to FALSE (see converting to boolean) will be removed.
这意味着(如果您只处理字符串),'' 或 '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);
}
}
您可以使用 array_filter() ,例如您的情况:
implode( ':', array_filter( $result ) );
这将在爆破之前过滤您的阵列。
我有一个没有赋值的简单数组:
Array
(
[field1] =>
[field2] =>
)
然后做类似的事情:
$result = array();
foreach ($array as $val) {
array_push($result, $val);
}
$data = implode("::", $result);
我最终得到:
::
那么,如果数组值为空,我该如何防止内爆生成分隔符? 如果我至少分配了一个值:
Array
(
[field1] => "hello"
[field2] =>
)
然后内爆就可以了。
在实际分解数组之前使用 array_filter()
过滤数组(删除空元素)。
根据 array_filter()
的文档:
If no callback is supplied, all entries of array equal to FALSE (see converting to boolean) will be removed.
这意味着(如果您只处理字符串),'' 或 '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);
}
}
您可以使用 array_filter() ,例如您的情况:
implode( ':', array_filter( $result ) );
这将在爆破之前过滤您的阵列。