Perl join()忽略(跳过)空数组值; PHP implode()似乎没有.
假设我有一个数组:
$array = array('one', '', '', 'four', '', 'six');
implode('-', $array);
Run Code Online (Sandbox Code Playgroud)
收益率:
one---four--six
Run Code Online (Sandbox Code Playgroud)
而不是(恕我直言):
one-four-six
Run Code Online (Sandbox Code Playgroud)
有我正在寻找的行为的任何其他内置插件?或者它是一个定制的工作?
Fel*_*ing 194
你可以使用array_filter():
如果没有提供回调,则将删除所有输入等于
FALSE(参见转换为布尔值)的条目.
implode('-', array_filter($array));
Run Code Online (Sandbox Code Playgroud)
显然,如果你在数组中有0(或任何其他值,false并且你想保留它),这将不起作用.但是,您可以提供自己的回调函数.
我想你不能认为它是内置的(因为函数是用用户定义的函数运行的),但是你总是可以使用array_filter.
就像是:
function rempty ($var)
{
return !($var == "" || $var == null);
}
$string = implode('-',array_filter($array, 'rempty'));
Run Code Online (Sandbox Code Playgroud)
小智 8
要删除null, false, emptystring 但保留0等,请使用 func。' strlen'
$arr = [null, false, "", 0, "0", "1", "2", "false"];
print_r(array_filter($arr, 'strlen'));
Run Code Online (Sandbox Code Playgroud)
将输出:
//Array ( [3] => 0 [4] => 0 [5] => 1 [6] => 2 [7] => false )
Run Code Online (Sandbox Code Playgroud)