【问题标题】:Adding key in an Array PHP在数组 PHP 中添加键
【发布时间】:2018-07-29 04:20:23
【问题描述】:

我正在学习数组,我想知道如何为这种数组添加键?

{  
   "items":[  
      {  
         "count":"1",
         "id":123,
         "description":"Bag",
         "price":11

      },
      {  
         "count":1,
         "id":1234,
         "description":"10% Discount",
         "price":-1.1

      }
   ],
   "total":9.9,
   "discount_total":9.9
}

因为我需要将数组转换为基于数组内的 id 的键。

{  
   "items":{  
      "123":{  
         "count":"1",
         "cart_id":123,
         "description":"Bag",
         "price":11
      },
      "1234":{  
         "count":1,
         "cart_id":1234,
         "description":"10% Discount",
         "price":-1.1
      }
   },
   "total":9.9,
   "discount_total":9.9
}

这是我的代码

header('Content-Type: application/json');
$cart_array = json_decode('{  
   "items":[  
      {  
         "count":"1",
         "cart_id":123,
         "plu":"TP16",
         "description":"Bag"

      },
      {  
         "count":1,
         "cart_id":1234,
         "plu":"DISCT10",
         "description":"10% Discount"

      }
   ],
   "total":9.9,
   "discount_total":9.9
}');

foreach ($cart_array->items as $item)
{
    $construct["cart_id"] = $item->cart_id;
}

我想问如何将id放入数组中?我不能使用$cart_array['id'] = $value,它返回错误。

未捕获的错误:不能使用 stdClass 类型的对象作为数组

我真的可以在这里使用一些解释

【问题讨论】:

标签: php arrays


【解决方案1】:

以下代码可以帮助您。

<?php
$json = '{  
   "items":[  
      {  
         "count":"1",
         "cart_id":123,
         "plu":"TP16",
         "description":"Small Four Seasons"

      },
      {  
         "count":1,
         "cart_id":1234,
         "plu":"DISCT10",
         "description":"10% Discount"

      }
   ],
   "total":9.9,
   "discount_total":9.9
}';
$data = json_decode($json,TRUE); //json decode 
foreach ($data['items'] as $key => $value) 
{
    $data['items'][$value['cart_id']] = $value;
    unset($data['items'][$key]);
} 
echo "<pre>";print_r($data);die;
?>

【讨论】:

    【解决方案2】:

    您根本不必循环。您可以使用 array_column 使数组与一行代码相关联。

    $cart_array['items'] = array_column($cart_array['items'], NULL, 'cart_id');
    

    https://3v4l.org/cPD5n

    【讨论】:

    • 我更改了正确答案,因为这也回答了我在解构数组时遇到的另一个问题(在一些验证后删除密钥)谢谢
    【解决方案3】:

    您可以在应用程序中使用此代码向索引数组添加键。

    foreach($obj as $key=>$val){
      foreach ($val as $index=>$content){
        $data[$content['id']]=$content;
      }
    }
    

    【讨论】:

      【解决方案4】:

      您可以根据需要获得相同的输出 json 数据:

      $array = json_decode($data,true);
      if(isset($array['items']) && count($array['items']) > 0){
          foreach($array['items'] as $key => $value){
              $value['cart_id'] = $value['id'];
               unset($value['id']);
              $array['items'][$value['cart_id']] = $value;
              unset($array['items'][$key]);
      
                         }
      }
      echo "<pre>";print_r($array);
      echo json_encode($array);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-28
        • 2012-08-12
        • 1970-01-01
        • 1970-01-01
        • 2011-10-09
        • 2019-10-06
        • 2018-11-27
        • 1970-01-01
        相关资源
        最近更新 更多