属性名称中的PHP冒号

时间:2011-11-21 11:29:56

标签: php arrays

我有一个变量$ entry,设置为:

  

stdClass对象(       [im:name] => stdClass对象           (               [label] =>惊人的断路器           )   等

如何访问“Amazing Breaker”值?

我试图定义一个常量:

define("IMNAME", 'im:name');

但使用:

foreach ($json_output->feed->entry as $entry) {
if (isset($entry->IMNAME->label))

返回FALSE。

问题似乎是冒号。对于没有冒号的密钥,代码将返回TRUE。

4 个答案:

答案 0 :(得分:32)

您可以将带有花括号的自由格式语法用于“特殊”属性名称:

if (isset($entry->{'im:name'}->label))

答案 1 :(得分:5)

大括号!

echo $Node->{'im:name'}->label;

基本上,我们使用的是Variable variable

答案 2 :(得分:1)

用大括号包裹IMNAME

if (isset($entry->{IMNAME}->label))

答案 3 :(得分:0)

这与PHP中的变量名不能包含冒号或双冒号这一事实有关。有关详细信息,请参阅https://php.net/manual/language.variables.basics.php

$entry->{IMNAME}->label

工作?