问题描述
我的数据如下:
[
{
"id": "3","title": "Boruto's Photo","is_lottery": 1,"price": 10
},{
"id": "4","title": "Misuki's Photo","is_lottery": 0,"price": 20
}
]
我要过滤is_lottery == false,从此收藏中删除价格键。输出为:
[
{
"id": "3",}
]
解决方法
您可以这样做
$json = '[
{
"id": "3","title": "Boruto\'s Photo","is_lottery": 1,"price": 10
},{
"id": "3","title": "Misuki\'s Photo","is_lottery": 0,"price": 20
}
]';
$filtered = collect(json_decode($json,true))->map(function ($array) {
if (!$array['is_lottery']) {
unset($array['price']);
}
return $array;
});
对于本机PHP,您可以这样做
$data = json_decode($json,true);
foreach ($data as $index => $array) {
if (!$array['is_lottery']) {
unset($array['price']);
}
$data[$index] = $array;
}
,
您可以将名为$ newCollection的新变量声明为最终集合。使用foreach()
来迭代您的集合,然后使用is_lottery
从集合中删除unset()
,然后将其推入$ newCollection,这是您如何使用foreach
删除它的示例:
$newCollection = [];
foreach ($photos as $key => $value) {
if ($value["is_lottery"] == 0) {
unset($value["price"]);
}
array_push($newCollection,$value);
}
,或者您可以尝试使用forget
将其从此ref从集合中删除(未经测试):
How to unset (remove) a collection element after fetching it?