【问题标题】:var_dump and print_r displays different results - PHPvar_dump 和 print_r 显示不同的结果 - PHP
【发布时间】:2018-04-06 12:24:37
【问题描述】:

我有一个字符串(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 将其显示为字符串?请帮忙。

【问题讨论】:

  • 你是在循环遍历 JSON 数组然后输出它的结果吗?
  • 你是在……对(已经编码的)字符串进行编码,然后再解码一层,从而返回原始(编码的)字符串吗?
  • var_dump 将其显示为字符串,因为此时它是字符串。如果它是有效的 json,您可以对其进行解码,然后您可以访问 $array['dataPacket']。没有完整的代码,很难进行精确调试。
  • 其实print_r()也说是字符串。如果它是一个数组,它的输出将沿着 Array ( [action] => putEntity 等行。

标签: php


【解决方案1】:
$array = json_decode(json_encode($data), True);

应该是

$array = json_decode($data, true);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 2011-04-03
    • 2011-08-05
    • 2015-05-29
    • 2016-06-15
    • 2012-04-20
    • 2013-01-16
    相关资源
    最近更新 更多