如何从php中的数组中获取多个数组?

问题描述

我有他的下一个数组看起来像:

array:50 [▼
  0 => array:39 [▶]
  1 => array:39 [▶]
  2 => array:39 [▶]
]

所以我想获取具有共同值的数组,例如:

array:39 [▼
    "id" => 121
    "user" => 368
]
array:39 [▼
    "id" => 121
    "user" => 3687
]
array:39 [▼
    "id" => 500
    "user" => 452
]

我想获取带有属性的两个数组 id 121,我试图用 foreach 循环数组,如下所示:

foreach ($info as $val){
       foreach($info as $f ){
           if($f["id"]==$val["id"]){
                //get the multiple arrays
           }
       }
}

所以,我无法获取所有数组,知道如何做到这一点吗?

解决方法

我会使用 Collection

  1. collect 你的数组:
$collection = collect([
    [
        "id" => 121
        "user" => 368
    ],[
        "id" => 121
        "user" => 3687
    ],[
        "id" => 500
        "user" => 452
    ]
]);
  1. 使用 where 方法根据特定键的值进行过滤:
$filtered = $collection->where('id',121);

$filtered->all();

/*
    [
        ['id' => '121','user' => 368],['id' => '121','user' => 3687],]
*/

可以使用其他类似 where 的方法。一定要通读所有关于 Collections 的文档,里面有很多很棒的例子!

如果您现在确信您应该将 Collections 用于所有事情,请查看 Adam Wathan 的精彩书籍(和其他资源):Refactoring to Collections(非免费)