【问题标题】:Filter multidimensional array by value in array [duplicate]按数组中的值过滤多维数组[重复]
【发布时间】:2016-12-22 06:37:47
【问题描述】:

这是我的数组:

$myArray = array(
    array("name"=>"Andrea", "Age"=>17),
    array("name"=>"Tresna", "Age"=>20),
    array("name"=>"Aria", "Age"=>12)
);

我想按数组中的值过滤该多数组。这是我的过滤器:

$filter = array("Andrea", "Aria");

所以结果一定是这样的:

$newArray = array(
    array("name"=>"Andrea", "Age"=>17),
    array("name"=>"Aria", "Age"=>12)
);

如何做到这一点?

【问题讨论】:

    标签: php arrays multidimensional-array array-filter


    【解决方案1】:

    提示已经存在,过滤,使用array_filter

    不要忘记使用use 关键字来导入您的条件。

    例子:

    $newArray = array_filter($myArray, function($e) use ($filter){
                                                    //    ^ import criteria
        return in_array($e['name'], $filter);
    });
    

    【讨论】:

    【解决方案2】:
    $myArray = array(
        array("name"=>"Andrea", "Age"=>17),
        array("name"=>"Tresna", "Age"=>20),
        array("name"=>"Aria", "Age"=>12)
    );
    $filter = array("Andrea", "Aria");
    
    foreach($myArray as $arr)
    {
    
        foreach($filter as $value)
        {
            if(in_array($value,$arr))
            {
                $finalArr[]=$arr;
            }
        }
    
    }
    

    $finalArr 是你的结果

    【讨论】:

    • 这不应该直接检查name属性吗?
    • 此仅代码答案未经测试且不正确。
    猜你喜欢
    • 2016-09-20
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 2015-07-26
    相关资源
    最近更新 更多