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

ume*_*iya 6 php oop syntax

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

我无法使用\标准的转义序列(-无论如何都没有记录).

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

$myobject->myweird-name
Run Code Online (Sandbox Code Playgroud)

这给出了一个错误,因为 -

Mic*_*ton 31

这就是你需要的:

$myobject->{'myweird-name'};
Run Code Online (Sandbox Code Playgroud)


cwa*_*ole 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'];
Run Code Online (Sandbox Code Playgroud)

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

$foo = new stdClass();
$foo->{"my-crazy-property"} = 1;
var_dump("my crazy property is {$foo->{"my-crazy-property"}}";
Run Code Online (Sandbox Code Playgroud)

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