Php 如何使用减号访问对象属性?

Php 如何使用减号访问对象属性?,php,object,Php,Object,我有一个对象(在PHP中),无法打印内容。 在调试模式下,如下所示: stdClass Object ( [pre-selection] => 1 ) 但是我不能打印“预选”,因为有负号 echo $object->pre-selection; //doens't work. 我怎样才能打印出来?谢谢。你可以试试 $object->{'pre-selection'}; 另请参见本文件的示例2 示例#2访问无效对象属性 访问对象中不包含字符的元素 PHP的命名约定

我有一个对象(在PHP中),无法打印内容。 在调试模式下,如下所示:

stdClass Object
(
    [pre-selection] => 1
)
但是我不能打印“预选”,因为有负号

echo $object->pre-selection; //doens't work.
我怎样才能打印出来?谢谢。

你可以试试

$object->{'pre-selection'};

另请参见本文件的示例2

示例#2访问无效对象属性

访问对象中不包含字符的元素 PHP的命名约定(例如连字符)允许 通过将元素名称封装在大括号和 撇号

<?php

$json = '{"foo-bar": 12345}';

$obj = json_decode($json);
print $obj->{'foo-bar'}; // 12345

?>

更新(感谢salathe): 也可以使用大括号,以清楚地分隔属性名称。当访问包含数组的属性内的值时,当属性名称由多个部分组成时,或当属性名称包含无效字符时,它们最有用。


有多种方法,问题是PHP标记器将阻塞代码中的
-
符号,无论您如何编写它,以便解析器不会抱怨:

echo $object->{'pre-selection'};

在这些情况下,PHP解析器不再在原始代码中有问题的地方运行


想知道这是在哪里记录的。例如:

访问XML文档中包含PHP命名约定不允许的字符(例如连字符)的元素可以通过将元素名称封装在大括号和撇号中来完成

<?php

$json = '{"foo-bar": 12345}';

$obj = json_decode($json);
print $obj->{'foo-bar'}; // 12345

?>
示例#3获得


谢谢,我不知道你能做到;)当我引用单引号时,它就开始工作了$对象->{'pre-selection'};该手册的链接是关于其他内容的(尽管写得有些类似)。但是,下面没有提到它。值得一提的是,我更新了“变量属性”部分,提到了花括号语法。(更新后的下周末将看到更改。)@salathe:谢谢,非常有帮助!谢谢,已经找到了解决方案。我把它添加到我的问题中。谢谢大家的快速回复。@KevinGorjan_uu另一个是先转换成数组。事实上,去罗马有很多方法。可能的重复-还有其他方法与你的相似/常见。我仍然想知道PHP手册中到底在哪里正确地记录了这一点;还有一个:
$array = (array) $object;   
echo $array['pre-selection'];
<?php
include 'example.php';

$movies = new SimpleXMLElement($xmlstr);

echo $movies->movie->{'great-lines'}->line;
?>
PHP solves all my web problems