var_dump和print_r显示不同的结果 - PHP

时间:2018-04-06 12:24:38

标签: php

我有一个字符串(JSON类型),我想将其转换为PHP数组。

{  
   "action":"putEntity",
   "dataPacket":{  
      "entity":[  
         {  
            "name":"product",
            "data":[  
               {  }
            ]
         }
      ]
   }
}

我这样做了,

$array = json_decode(json_encode($data), True);

当我执行 var_dump($ array); 时,它会显示:

string(1578) "{ "action": "putEntity", "dataPacket": { "entity": [{ "name": "product", "data": [{ }] }] } }"

但当我这样做时, print_r($ array); 会显示:

{
   "action": "putEntity",
   "dataPacket":{
   "entity":[
         {
         "name": "product",
         "data":[{}]
         }
      ]
   }
}

问题是当我尝试打印$array['dataPacket']; 时会抛出错误非法字符串偏移'dataPacket'

为什么var_dump将其显示为String?请帮忙。

1 个答案:

答案 0 :(得分:1)

$array = json_decode(json_encode($data), True);

应该是

$array = json_decode($data, true);