Perl的join()
忽略(跳过)空数组值;PHP的implode()
似乎没有。
假设我有一个数组:
$array = array('one', '', '', 'four', '', 'six');
implode('-', $array);
收益率:
one---four--six
而不是(我喜欢的):
one-four-six
还有没有其他内置了我想要的行为?或者这将是一个定制的工作?
发布于 2011-05-13 06:53:29
我想您不能认为它是内置的(因为该函数是使用用户定义的函数运行的),但是您可以始终使用array_filter。
类似于:
function rempty ($var)
{
return !($var == "" || $var == null);
}
$string = implode('-',array_filter($array, 'rempty'));
发布于 2011-05-13 07:10:14
你应该如何实现你的过滤器只取决于你所看到的“空”。
function my_filter($item)
{
return !empty($item); // Will discard 0, 0.0, '0', '', NULL, array() of FALSE
// Or...
return !is_null($item); // Will only discard NULL
// or...
return $item != "" && $item !== NULL; // Discards empty strings and NULL
// or... whatever test you feel like doing
}
function my_join($array)
{
return implode('-',array_filter($array,"my_filter"));
}
发布于 2020-06-29 08:38:47
$array = ["one", NULL, "two", NULL, "three"];
$string = implode("-", array_diff($array, [NULL]));
echo $string;
返回one-two-three
https://stackoverflow.com/questions/5985401
复制相似问题