【发布时间】:2012-09-18 20:13:00
【问题描述】:
您将在下面找到我的 xml 文档:
<?xml version="1.0" encoding="ISO-8859-1"?>
<app>
<version>0925</version>
<humanVersion>0.9.25</humanVersion>
</app>
这是我的 php:
$completeurl = "ota/shingle/shingle.xml";
$xml = simplexml_load_file($completeurl);
$updateVer = $xml->version;
$updateVerHuman = $xml->humanVersion;
我正在获取 php 变量并将它们放入一个 json 字符串中,这是输出:
{"updateVer":{"0":"0925"},"updateVerHuman":{"0":"0.9.25"}}
为什么 updateVer 和 updateVerHuman 数据包含在 {} 中并且包含“0”:??我只想要那个值的数据。我如何做到这一点?
我试过了,但结果是一样的:
$updateVer = $xml->version[0];
$updateVerHuman = $xml->humanVersion[0];
【问题讨论】:
-
尝试使用
$xml->version->{0}获取名为“0”的属性的值 -
@sachleen 您误读了这个问题 - XML 中没有名为“0”的属性,当他们尝试将提取的变量编码为 JSON 时,它就会出现。
-
也就是说和这样做是一样的:
$object = new StdClass; $offset = 0; $object->$offset = '1.2.3'; var_dump(json_encode($object)); -
@ficuscr 是的,大致如此。但请记住,SimpleXML 对象不是“真正的”PHP 对象,它们是一组围绕非 PHP 数据结构的方法和运算符。因此,它们在各种序列化下的行为方式可能有些不可预测。