我有一个对象(在PHP中),我无法打印内容.在调试模式下,它是这样的:
stdClass Object
(
[pre-selection] => 1
)
Run Code Online (Sandbox Code Playgroud)
但由于减号,我无法打印'预选'.
echo $object->pre-selection; //doens't work.
Run Code Online (Sandbox Code Playgroud)
我怎么打印出来?谢谢.
Ste*_*ins 37
你可以试试
$object->{'pre-selection'};
Run Code Online (Sandbox Code Playgroud)
http://php.net/manual/en/language.types.string.php#language.types.string.parsing.complex
另见例2 json_decode()
示例#2访问无效的对象属性
访问包含PHP命名约定下不允许的字符的对象中的元素(例如连字符)可以通过将元素名称封装在大括号和撇号中来实现.
Run Code Online (Sandbox Code Playgroud)<?php $json = '{"foo-bar": 12345}'; $obj = json_decode($json); print $obj->{'foo-bar'}; // 12345 ?>
也可以使用卷曲括号来清楚地界定属性名称.当访问包含数组的属性中的值,属性名称由多个部分组成时,或者属性名称包含其他方式无效的字符时,它们最有用
有多种方法,问题是PHP令牌化器会阻塞-
代码中的符号,如何编写它以便解析器不会抱怨:
echo $object->{'pre-selection'};
Run Code Online (Sandbox Code Playgroud)
要么
$property = 'pre-selection'
echo $object->$property;
Run Code Online (Sandbox Code Playgroud)
要么
$array = (array) $object;
echo $array['pre-selection'];
Run Code Online (Sandbox Code Playgroud)
在这些情况下,PHP解析器不会在原始代码中运行,因为它有问题需要再解析.
想知道这在哪里记录.例如,在SimpleXML文档中:
访问包含PHP命名约定下不允许的字符的XML文档中的元素(例如连字符)可以通过将元素名称封装在大括号和撇号中来实现.
示例#3获取<line>
Run Code Online (Sandbox Code Playgroud)<?php include 'example.php'; $movies = new SimpleXMLElement($xmlstr); echo $movies->movie->{'great-lines'}->line; ?>
上面的例子将输出:
Run Code Online (Sandbox Code Playgroud)PHP solves all my web problems
归档时间: |
|
查看次数: |
5027 次 |
最近记录: |