Laravel-如何从集合中删除密钥?

问题描述

我的数据如下:

[
        {
            "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?

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...