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


How to access object property when property name contains - (hyphen)

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

我不能使用标准转义序列'来实现这一点(-无论如何都没有文档记录)。

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

$myobject->myweird-name

由于-

这就是您所需要的:

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

如果您需要查找索引,有以下几种方法:

// 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方法调用而不使用对象本身可能会更快(也可能更干净/更清晰)。值得思考。