Как получить доступ к объекту, когда имя свойства содержит – (дефис)

Мне нужна escape-последовательность для - или знак минус для php. У объекта есть пара имен и значений, где имя имеет значение - между двумя словами.

Я не могу этого сделать, используя стандартную escape-последовательность ( - не документируется).

Я могу сохранить имя в $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"}}"; 

Поскольку вы упомянули, что это API LinkedIn, который, я считаю, имеет возможность возврата XML, может быть быстрее (и, возможно, более чистым / понятным) использовать вызовы метода XML и не использовать сами объекты. Пища для размышлений.