首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在跳过空数组项的同时内爆数组?

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

Stack Overflow用户
提问于 2011-05-13 06:49:46
回答 7查看 48.6K关注 0票数 110

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

假设我有一个数组:

代码语言:javascript
复制
$array = array('one', '', '', 'four', '', 'six');
implode('-', $array);

收益率:

代码语言:javascript
复制
one---four--six

而不是(我喜欢的):

代码语言:javascript
复制
one-four-six

还有没有其他内置了我想要的行为?或者这将是一个定制的工作?

EN

回答 7

Stack Overflow用户

发布于 2011-05-13 06:53:29

我想您不能认为它是内置的(因为该函数是使用用户定义的函数运行的),但是您可以始终使用array_filter

类似于:

代码语言:javascript
复制
function rempty ($var)
{
    return !($var == "" || $var == null);
}
$string = implode('-',array_filter($array, 'rempty'));
票数 9
EN

Stack Overflow用户

发布于 2011-05-13 07:10:14

你应该如何实现你的过滤器只取决于你所看到的“空”。

代码语言:javascript
复制
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"));
} 
票数 3
EN

Stack Overflow用户

发布于 2020-06-29 08:38:47

代码语言:javascript
复制
$array = ["one", NULL, "two", NULL, "three"];
$string = implode("-", array_diff($array, [NULL]));
echo $string;

返回one-two-three

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5985401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档