【问题标题】:Compare arrays and discard empty values? [duplicate]比较数组并丢弃空值? [复制]
【发布时间】:2016-12-19 15:03:30
【问题描述】:

我有两个数组,我想返回一个只包含我模板中的键的数组:

$protected template = ['name' => 'john', 'age'=> 10];

public function merge($params){

    $arr = array_intersect_key($params, $this->template);

}

以上方法可行,但我也想过滤掉值为空的键。

所以如果我通过:

[name => 'jeff', age => '']

它只会过滤掉一个数组:

[name => 'jeff']

有没有办法做到这一点,或者最好只循环遍历数组并进行空检查?

【问题讨论】:

    标签: php


    【解决方案1】:

    您可以使用array_filter 删除空元素。

    $template = array_filter($template, 'strlen')
    

    【讨论】:

    • 这将在这种情况下删除年龄 ['name' => 'john', 'age'=> '0'];
    • 是的,我是。你需要一个回调函数来处理这个
    • 如果您没有先运行代码,请不要投反对票……@jonju 的评论完全错误且令人困惑。检查我在上面发给你的链接。它按预期运行
    • 我没有投反对票。为什么这是错误的? 如果没有提供回调,所有等于 FALSE 的数组条目(请参阅转换为布尔值)都将被删除。php.net/manual/en/function.array-filter.php
    猜你喜欢
    • 2018-10-10
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2015-12-17
    • 2014-12-08
    • 1970-01-01
    相关资源
    最近更新 更多