【问题标题】:Filter multidimensional array on second level [duplicate]在第二级过滤多维数组[重复]
【发布时间】:2015-07-26 10:57:32
【问题描述】:

有很多关于过滤的线程,但我整天都在谷歌,无法让它工作。

我有一个数组,它是通过 mysqli 查询创建的。

$cat_cross =
    array(2)
      { [0]=> array(3)
          { ["cat_cross_id"]=> string(2) "24" 
            ["cat_cross_items_id"]=> string(1) "4" 
            ["cat_cross_user_id"]=> string(2) "58" 
          } 
        [1]=> array(3)
          { ["cat_cross_id"]=> string(2) "25" 
            ["cat_cross_items_id"]=> string(1) "6" 
            ["cat_cross_user_id"]=> string(2) "58" 
          }
      }

现在我只想使用“cat_cross_items_id”的值获取查询,因为稍后我需要它来在 if 子句中将其与其他 var 进行比较。

我试过这个:

$allowed = array("cat_cross_items_id");
var_dump(array_intersect_key($cat_cross, array_flip($allowed)));

我认为这适用于第一级数组,但我如何过滤第二级呢?

想要的结果:

$new_arr = array(4,6)

非常感谢!

【问题讨论】:

    标签: php arrays multidimensional-array filtering


    【解决方案1】:

    PHP >= 5.5.0:

    $new_arr = array_column($cat_cross, "cat_cross_items_id");
    

    PHP >= 5.3.0:

    $new_arr = array_map(function($v) { return $v["cat_cross_items_id"]; }, $cat_cross);
    

    早期版本需要循环或在array_map() 中调用外部函数。

    【讨论】:

    • 就像昨天一样:stackoverflow.com/a/28307212 :)
    • 是的,看起来像似曾相识,但这不是你昨天链接的问题。
    • 正是我想要的。非常感谢!
    • 很抱歉给你们俩一个似曾相识的感觉,但我可以找到线程或者可以将其与我的代码匹配 :( 但是现在。非常感谢!
    猜你喜欢
    • 2017-04-01
    • 2018-02-10
    • 2013-06-23
    • 1970-01-01
    • 2016-12-22
    • 2010-12-08
    • 2011-05-24
    • 2011-02-27
    相关资源
    最近更新 更多