php中特殊字符的关联数组键更改

php中特殊字符的关联数组键更改,php,arrays,Php,Arrays,这是我的示例对象。我需要使用数组访问对象。但在这种情况下,我无法访问数组,因为特殊字符(@)是前缀。请帮助我如何访问阵列 SimpleXMLElement Object ( [@attributes] => Array ( [Reference] => 758 [Key] => P201602161758028991205395 ) ) 您可以直接访问这些属性,例如 echo $elem

这是我的示例对象。我需要使用数组访问对象。但在这种情况下,我无法访问数组,因为特殊字符(@)是前缀。请帮助我如何访问阵列

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [Reference] => 758
            [Key] => P201602161758028991205395
        )

)

您可以直接访问这些属性,例如

echo $elem["Reference"];
echo $elem["Key"];
正如@Mark Baker指出的正确方向一样,
SimpleXML
的真正魔力发生在幕后。正如@deceze提到的,这是特定于SimpleXML的

您甚至可以在其上循环:

foreach($xml->foo[0]->attributes() as $a => $b) {
    echo "$a = $b \n";
}

您可以直接访问这些属性,例如

echo $elem["Reference"];
echo $elem["Key"];
正如@Mark Baker指出的正确方向一样,
SimpleXML
的真正魔力发生在幕后。正如@deceze提到的,这是特定于SimpleXML的

您甚至可以在其上循环:

foreach($xml->foo[0]->attributes() as $a => $b) {
    echo "$a = $b \n";
}

正如@Jan的答案所示,您可以直接访问各个属性

如果需要将所有属性作为一个真正的数组抓取,这是一种方法:

$attributes = current($element->attributes());

我更喜欢这种紧凑、浓缩的方式,将所有属性作为一个没有循环的数组抓取。

如@Jan的回答所示,您可以直接访问单个属性

如果需要将所有属性作为一个真正的数组抓取,这是一种方法:

$attributes = current($element->attributes());

我更喜欢这是一种紧凑、浓缩的方式,可以将所有属性作为一个没有循环的数组来获取。

Objects!==阵列。。。。如果需要访问属性,请使用
$obj->{'@attributes'}['Key']
请使用RTFM,例如#5,访问属性:Objects!==阵列。。。。如果需要访问属性,请使用
$obj->{'@attributes'}['Key']
请使用RTFM,例如#5,访问属性: