如何在跳过空数组项时内爆数组?

2022-08-30 07:20:44

Perl 忽略(跳过)空数组值;PHP似乎没有。join()implode()

假设我有一个数组:

$array = array('one', '', '', 'four', '', 'six');
implode('-', $array);

收益 率:

one---four--six

而不是(恕我直言,最好):

one-four-six

是否有任何其他内置功能具有我正在寻找的行为?还是会是一个定制的求职者?


答案 1

您可以使用 array_filter()

如果未提供回调,则将删除所有等于 FALSE输入条目(请参阅转换为布尔值)。

implode('-', array_filter($array));

显然,如果您的数组中有(或任何其他计算结果为 )的值,并且想要保留它,这将不起作用。但是,您可以提供自己的回调函数。0false


答案 2

我想你不能认为它是内置的(因为该函数是与用户定义的函数一起运行的),但你总是可以使用array_filter
像这样:

function rempty ($var)
{
    return !($var == "" || $var == null);
}
$string = implode('-',array_filter($array, 'rempty'));

推荐