当前位置: 首页 > 知识库问答 >
问题:

如何在Laravel中过滤子数组的数组?

施晗昱
2023-03-14

如何通过子数组值筛选数组?在这个例子中,我有下面的API请求数组,并且希望只构建一个id为2的新数组,该数组具有name=Other name,因为我的过滤器被设置为Other name

[
  {
    "id": 1,
    "attendees": [
      {
        "emailAddress": {
          "name": "Some Name",
          "address": "mail@some"
        }
      }
    ]
  },
  {
    "id": 2,
    "attendees": [
      {
        "emailAddress": {
          "name": "Other Name",
          "address": "mail@other"
        }
      }
    ]
  }
]

是否有方法执行foreach并填充新数组if(name==selected name)

共有2个答案

罗渝
2023-03-14

相反,forach可以考虑Laravel集合,将数组转换为集合,然后使用filter方法。示例:

    $collection = collect([
        [
            "id" => 1,
            "attendees"=> [
            [
                "emailAddress" => [
                "name"=> "Some Name",
                "address"=> "mail@some"
                ]
            ]
            ]
        ],
        [
            "id" => 2,
            "attendees" => [
                [
                    "emailAddress"=> [
                    "name"=> "Other Name",
                    "address"=> "mail@other"
                    ]
                ]
            ]
        ]
    ]);

    $filter = "Other Name";
    $filtered = $collection->filter( function( $value, $key ) use ( $filter ) {
        $attendees = collect( $value[ "attendees" ] );
        
        $filteredAttendees = $attendees->filter( function( $value, $key ) use ( $filter ){
            return $value["emailAddress"]["name"] === $filter;
        } );
        
        return count( $filteredAttendees ) > 0;
    });

    dd( $filtered->toArray( ));
施同
2023-03-14
foreach ( $array as $k=>$v )
{
    if($array[$k]['id']==2 && $array[$k]['name'] == selected name){
         //make new array here...
    }
}
 类似资料:
  • 问题内容: 如何过滤Java中的数组? 我有一系列对象,例如汽车: 类: 用: 现在我要过滤汽车阵列,只保留4门或更多: 我应该怎么做? 在使用Vector之前,请执行以下操作: 然后,我将使用Vector的大小创建一个新数组。然后,我将再次遍历向量并填充新数组。我知道这对于简单的事情来说是一个非常大的过程。 我正在使用J2ME。 问题答案: 编辑: 看到ArrayList不在J2ME中,但是基于

  • 问题内容: 我花了很多时间为我的问题找到解决方案。 在此示例中,我在SetNavRecords数组中有2条记录。第一个是 “ Artikelnummer”:“ 21700” ,第二个是 “ Artikelnummer”:“ 21701” 每个记录都有一个数组“ OfflineVerkaufspreis”。 对我来说重要的是“ OfflineVerkaufspreis”中的“ Location_Co

  • 问题内容: 我在子文档中有这样的数组 我可以过滤> 3的子文档吗 我的预期结果如下 我尝试使用,$elemMatch但返回数组中的第一个匹配元素 我的查询: 结果返回数组中的一个元素 我尝试使用聚合与$match但不起作用 返回数组中的所有元素 我可以过滤数组中的元素以获得预期结果吗? 问题答案: 使用是正确的方法,但在应用数组之前需要先对数组进行过滤,以便可以过滤单个元素,然后用于将其放回原处:

  • 我正在尝试从MongoDB中的数组中获取一个元素。我认为聚合过滤器是正确的应用程序。但是我已经尝试了一百万次,我仍然找不到问题所在。你能帮我吗? MongoDB示例数据: 我的解决方案: 我的结果: 预期结果: 我已经检查了Mongo参考:https://docs.mongodb.com/manual/reference/operator/aggregation/filter/#example M

  • 问题内容: 我有一个数组模型如下: 现在我有了一个Empid的数组。 所以现在我需要过滤第一个包含第二个中所有键的数组。 输出: 我可以使用循环进行此操作,但是由于我的模型对象中有100多个记录。我需要如何更好地处理此问题的建议。 我正在考虑创建一个自定义过滤器,但是您对此有何看法(如果可以,请提供示例代码来实现此目的)。 感谢您的帮助。 谢谢。 问题答案: 你可以做到这一点, 如果返回一个值,则

  • 问题内容: 因此,单击该按钮后,我可以通过该事件获得该按钮。但是,当我做一个过滤器时,它不会删除所说的按钮。 所以我在构造函数()中有我的数组: 然后我有功能: 但是,其中仍然包含两个元素。 我想过另一种删除它的方法,那就是使用“键”,但是我似乎找不到任何有关获得键值的东西。 问题答案: 首先,您需要绑定到回调函数的范围。如果要访问用于从合成事件呈现按钮的react对象实例,则可以使用privat