首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除空数组元素,除非先删除(空)

删除空数组元素,除非先删除(空)
EN

Stack Overflow用户
提问于 2017-01-02 16:31:23
回答 2查看 163关注 0票数 0

是否可以从数组中删除除第一个元素之外的所有空元素?看看这个例子:

原创

代码语言:javascript
复制
Array (
[0] => val1
[1] => val2
[2] => val3
[3] => 
[4] => val4
[5] => val5
[6] => val6
[7] => 
[8] => val7
[9] => val8
[10] => val9
)

期望结果

代码语言:javascript
复制
Array (
[0] => val1
[1] => val2
[2] => val3
[3] => 
[4] => val4
[5] => val5
[6] => val6
[7] => val7
[8] => val8
[9] => val9
)

这个是可能的吗?实现这一目标的最佳方式是哪一种?

提前谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-02 16:39:07

简单的解决办法是:

代码语言:javascript
复制
$a = array(
    '0' => 'val1',
    '1' => 'val2',
    '2' => 'val3',
    '3' => '',
    '4' => 'val4',
    '5' => 'val5',
    '6' => 'val6',
    '7' => '',
    '8' => 'val7',
    '9' => 'val8',
    '10' => 'val9',
);
// special flag to check if empty 
// element already exists in new array
$has_empty = false;
$new_a = [];
foreach ($a as $el) {
    if (!empty($el) || !$has_empty) {
        $new_a[] = $el;
        if (empty($el)) {
            $has_empty = true;
        }
    }
}
echo'<pre>',print_r($new_a),'</pre>';
票数 1
EN

Stack Overflow用户

发布于 2017-01-02 16:42:25

您可以使用array_filter

代码语言:javascript
复制
$first = false;
$result = array_filter($arr, function($k) use($first){
    if(empty($k) && !first){
       $first = true;
       return true;
    }
    return !empty($k);
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41430282

复制
相关文章

相似问题

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