繁体   English   中英

在数组PHP中添加键

[英]Adding key in an Array PHP

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

{  
   "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
$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;
?>

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

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

您可以根据需要获得相同的输出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);

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

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

https://3v4l.org/cPD5n

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM