是否可以使用$request->除了在嵌套数组上?这是请求数据:
[▼
"id" => 1
"products" => array:1 [▼
0 => array:4 [▼
"id" => 1
"name" => "sample product"
"date" => "07/04/2022"
"frequency" => array:1 [ …1]
]
]
]
我的目标是删除一些键值对,例如删除id日期,频率和. 我想要的结果是:
[▼
"id" => 1
"products" => array:1 [▼
0 => array:1 [▼
"name" => "sample product"
]
]
]
到目前为止,我所尝试的是使用Arr:except功能:$request->products = Arr::except($request->products['0'], ['id', 'date', 'frequency']);
但这应该适用于所有项目。假设我有两个item产品,期望的结果将是:
[▼
"id" => 1
"products" => array:2 [▼
0 => array:1 [▼
"name" => "sample product"
]
1 => array:1 [▼
"name" => "sample product 2"
]
]
]
需要你的意见,什么是最好的方法。谢谢你!
除非我错过了一些明显的东西,否则您可以不只是在$request
对象中迭代products
吗?
$filtered = [];
foreach ($request->products as $product) {
$filtered[] = Arr::except($product, ['id', 'date', 'frequency']);
}
dd($filtered);
导致$filtered
含有:
^ array:2 [▼
"id" => 1
"products" => array:2 [▼
0 => array:1 [▼
"name" => "sample product"
]
1 => array:1 [▼
"name" => "sample product 2"
]
]
]
更新1
我可以看到$request except只在顶层工作
我不知道你说的是什么意思,因为上面的原则对我来说是有效的。
$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"
]
]