0
SimpleXMLElement Object
(
    [0] => CEM
)

有一个SimpleXMLElement像这样的对象。我尝试使用$object->0and访问它$object->{0}。但它给出了一个php错误。我们如何在不将其更改为另一种格式的情况下访问它。

4

2 回答 2

1

从您的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

在线演示

于 2013-04-05T21:51:51.353 回答
0

在您的情况下,它显示为您执行 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"
于 2015-02-21T17:49:12.487 回答