PHP:从JSON字符串中获取值?

PHP:从JSON字符串中获取值?,php,json,Php,Json,我有一个字符串如下所示: [ { "id":"2", "price":"39.99", "timeStamp":"1506264307167", "quantity":"1", "colours":"Green", "pid":"234234234" }, { "id":"2", "price":"39.99", "timeStamp":"1506264311757",

我有一个字符串如下所示:

[
   {
      "id":"2",
      "price":"39.99",
      "timeStamp":"1506264307167",
      "quantity":"1",
      "colours":"Green",
      "pid":"234234234"
   },
   {
      "id":"2",
      "price":"39.99",
      "timeStamp":"1506264311757",
      "quantity":"1",
      "colours":"Blue",
      "pid":"234234234"
   }
]
我需要使用PHP从这个JSON字符串中获取id

所以我试了一下:

$details = '[
       {
          "id":"2",
          "price":"39.99",
          "timeStamp":"1506264307167",
          "quantity":"1",
          "colours":"Green",
          "pid":"234234234"
       },
       {
          "id":"2",
          "price":"39.99",
          "timeStamp":"1506264311757",
          "quantity":"1",
          "colours":"Blue",
          "pid":"234234234"
       }
    ]';

$details = json_encode($details, true);

$array = json_decode($details, true);
$oid = $array['id'];


echo $oid;
上面的代码在while循环中,因此echo$oid应该回显id 多次

无论如何,上面的代码只打印以下内容:

[
[
当我查看错误日志时,我看到以下错误:

PHP Warning:  Illegal string offset 'id'
有人能就这个问题提出建议吗


提前感谢。

请尝试以下代码:

<?php
$details = '[
       {
          "id":"2",
          "price":"39.99",
          "timeStamp":"1506264307167",
          "quantity":"1",
          "colours":"Green",
          "pid":"234234234"
       },
       {
          "id":"2",
          "price":"39.99",
          "timeStamp":"1506264311757",
          "quantity":"1",
          "colours":"Blue",
          "pid":"234234234"
       }
    ]';


$array = json_decode($details, true);
$oid = $array[0]['id'];


echo $oid;
而不是将json字符串编码为json。直接解码到PHP数组。并使用[0]索引获取第一个Json对象


您需要一个循环来遍历所有嵌套数组并获取所有id。

为什么要将json转换为json?@johncode,我认为这就是能够获取id值所需的内容?如果它已经是json,那么根据常识,您不需要将其转换为jsonIt的对象数组,试一下当前的$array->id只是为了了解情况,因为foreach本身负责索引,所以尽可能多地使用它。
<?php
$details = '[
       {
          "id":"2",
          "price":"39.99",
          "timeStamp":"1506264307167",
          "quantity":"1",
          "colours":"Green",
          "pid":"234234234"
       },
       {
          "id":"2",
          "price":"39.99",
          "timeStamp":"1506264311757",
          "quantity":"1",
          "colours":"Blue",
          "pid":"234234234"
       }
    ]';


$array = json_decode($details, true);

for($i=0;$i<count($array);$i++){
    $idValue = $array[$i]['id'];
    echo $idValue;
}