SimpleXMLElement Object
(
[0] => CEM
)
有一个SimpleXMLElement
像这样的对象。我尝试使用$object->0
and访问它$object->{0}
。但它给出了一个php错误。我们如何在不将其更改为另一种格式的情况下访问它。
SimpleXMLElement Object
(
[0] => CEM
)
有一个SimpleXMLElement
像这样的对象。我尝试使用$object->0
and访问它$object->{0}
。但它给出了一个php错误。我们如何在不将其更改为另一种格式的情况下访问它。
从您的print_r
输出来看,这可能不是很明显:
SimpleXMLElement Object
(
[0] => CEM
)
这只是一个包含字符串CEM的 XML 元素,例如:
<xml>CEM</xml>
您可以通过转换为字符串来获得该值(请参阅Basic SimpleXML usage Docs):
(string) $object;
当您有一个SimpleXMLElement
对象并且不确定它代表什么时,使用它echo $object->asXML();
来输出 XML 并对其进行分析比print_r
单独使用更容易,因为这些元素具有很多您需要了解的魔力才能正确读取print_r
输出。
上面的一个例子:
<?php
$object = new SimpleXMLElement('<xml>CEM</xml>');
print_r($object);
echo "\n", $object->asXML(), "\n";
echo 'Content: ', $object, "\n"; // echo does cast to string automatically
输出:
SimpleXMLElement Object
(
[0] => CEM
)
<?xml version="1.0"?>
<xml>CEM</xml>
Content: CEM
(在线演示)
在您的情况下,它显示为您执行 print_r($object) 并且 $object 它是一个数组,因此您正在查看的不是 XML 对象,而是包含在 print_r() 的显示对象中的数组
无论如何,要访问 simpleXML 对象,您可以在此处使用 {} 语法:
$xmlString = '<uploads token="vwl3u75llktsdzi">
<attachments>
<attachment myattr="attribute value">123456789</attachment>
</attachments>
</uploads>';
$xml = simplexml_load_string($xmlString);
echo "attachment attribute: " . $xml->{"attachments"}->attributes()["myattr"] " \n";
echo " uploads attribute: " . $xml->{"uploads"}->attributes()["token"] . "\n";
您可以用 $myVar 或其他东西替换“附件”
请记住 attributes() 返回一个关联数组,因此您可以使用方括号或通过 array_keys() 访问数据或执行 foreach 循环。
在您的具体情况下可能只是
echo $object[0]; // returns string "CEM"