Laravel如何使用$请求,除了嵌套数组

发布于 2025-02-13 05:32:45 字数 1143 浏览 0 评论 0原文

是否可以在嵌套数组上使用 $ request->除外?这是请求数据:

    [▼
      "id" => 1
      "products" => array:1 [▼
        0 => array:4 [▼
          "id" => 1
          "name" => "sample product"
          "date" => "07/04/2022"
          "frequency" => array:1 [ …1]
        ]
      ]
    ]

我的目标是删除一些钥匙值对,例如删除 id date 频率。我所需的结果是:

    [▼
      "id" => 1
      "products" => array:1 [▼
        0 => array:1 [▼
          "name" => "sample product"
        ]
      ]
    ]

到目前为止,我尝试的是使用 arr:除函数外:

$request->products = Arr::except($request->products['0'], ['id', 'date', 'frequency']);

但这应该应用于所有项目。假设我有两个项目产品,所需的结果是:

        [▼
          "id" => 1
          "products" => array:2 [▼
            0 => array:1 [▼
              "name" => "sample product"
            ]
            1 => array:1 [▼
              "name" => "sample product 2"
            ]
          ]
        ]

需要您对最佳方法的投入。谢谢你!

Is it possible to use $request->except on a nested array? This is the request data:

    [▼
      "id" => 1
      "products" => array:1 [▼
        0 => array:4 [▼
          "id" => 1
          "name" => "sample product"
          "date" => "07/04/2022"
          "frequency" => array:1 [ …1]
        ]
      ]
    ]

My goal is to remove some key value pairs e.g. removing id, date and frequency. My desired result would be:

    [▼
      "id" => 1
      "products" => array:1 [▼
        0 => array:1 [▼
          "name" => "sample product"
        ]
      ]
    ]

What I've tried so far is to use Arr:except function:

$request->products = Arr::except($request->products['0'], ['id', 'date', 'frequency']);

But this should be applied on all items. Let's say I have two item products, the desired result would be:

        [▼
          "id" => 1
          "products" => array:2 [▼
            0 => array:1 [▼
              "name" => "sample product"
            ]
            1 => array:1 [▼
              "name" => "sample product 2"
            ]
          ]
        ]

Need your inputs on what's the best approach for this. Thank you!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

葵雨 2025-02-20 05:32:46

除非我缺少明显的东西,否则您能否不仅在$ replect olection对象中迭代products

$filtered = [];

foreach ($request->products as $product) {
    $filtered[] = Arr::except($product, ['id', 'date', 'frequency']);
}

dd($filtered);

导致$过滤包含:

^ array:2 [▼
  "id" => 1
  "products" => array:2 [▼
    0 => array:1 [▼
      "name" => "sample product"
    ]
    1 => array:1 [▼
      "name" => "sample product 2"
    ]
  ]
]

更新1

我可以看到$请求除了仅在顶级上工作

而不确定您的意思是上述原则对我有用。

$filtered = [];
foreach ($request->products as $product) {
    $filtered[] = Arr::except($product, ['id', 'date', 'frequency']);
}
$request->merge(['products' => $filtered]);

如果我提供以下内容:

{
    "id": 1,
    "products": [
        {
            "id": 1,
            "name": "sample product",
            "date": "07/04/2022",
            "frequency": []
        },
        {
            "id": 2,
            "name": "sample product 2",
            "date": "07/04/2022",
            "frequency": []
        }
    ]
}

然后进行dd($ request-> products);我得到:

^ array:2 [▼
  0 => array:1 [▼
    "name" => "sample product"
  ]
  1 => array:1 [▼
    "name" => "sample product 2"
  ]
]

Unless I am missing something obvious, could you not just iterate over the products in your $request object?

$filtered = [];

foreach ($request->products as $product) {
    $filtered[] = Arr::except($product, ['id', 'date', 'frequency']);
}

dd($filtered);

Resulting in $filtered containing:

^ array:2 [▼
  "id" => 1
  "products" => array:2 [▼
    0 => array:1 [▼
      "name" => "sample product"
    ]
    1 => array:1 [▼
      "name" => "sample product 2"
    ]
  ]
]

Update 1

I can see that the $request except only works on the top level

Not sure what you mean by this as the above principle works for me.

$filtered = [];
foreach ($request->products as $product) {
    $filtered[] = Arr::except($product, ['id', 'date', 'frequency']);
}
$request->merge(['products' => $filtered]);

If I supply the above with the following:

{
    "id": 1,
    "products": [
        {
            "id": 1,
            "name": "sample product",
            "date": "07/04/2022",
            "frequency": []
        },
        {
            "id": 2,
            "name": "sample product 2",
            "date": "07/04/2022",
            "frequency": []
        }
    ]
}

Then do a dd($request->products); I get:

^ array:2 [▼
  0 => array:1 [▼
    "name" => "sample product"
  ]
  1 => array:1 [▼
    "name" => "sample product 2"
  ]
]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文