如何在属性名称包含时访问对象属性 - (连字符)

时间:2012-04-02 11:35:04

标签: php oop syntax

我需要-的转义序列或php的减号。该对象具有名称 - 值对,其中名称恰好在2个单词之间具有-

我无法使用\标准转义序列(-无法记录)。

我可以将名称存储在可以使用的$myvariable中,但出于好奇,是否可以执行以下操作?

$myobject->myweird-name

由于-

,这会产生错误

2 个答案:

答案 0 :(得分:31)

这就是你需要的:

$myobject->{'myweird-name'};

答案 1 :(得分:7)

如果您需要查找索引,有几种方法可以执行此操作:

// use a variable
$prop = 'my-crazy-property';
$obj->$prop;

// use {}
$obj->{'my-crazy-property'};

// get_object_vars (better with a lot of crazy properties)
$vars = get_object_vars($obj);
$vars['my-crazy-property'];

// you can cast to an array directly
$arr = (array)$obj;
$arr['my-crazy-property'];

如果你需要在一个字符串中工作(这不是你最好的想法,你应该尽可能使用手动连接,因为它更快,解析的字符串是不必要的),那么你应该使用{}基本上逃避整个序列:

$foo = new stdClass();
$foo->{"my-crazy-property"} = 1;
var_dump("my crazy property is {$foo->{"my-crazy-property"}}";

既然你提到这是LinkedIn的API,我相信它可以选择返回XML,它可能更快(也可能更清晰/更清晰)使用XML方法调用而不是使用对象本身。值得深思。