Доступ к PHP-объекту со знаком доллара в качестве имени узла - PullRequest
15 голосов
/ 07 декабря 2010

Я работаю с API данных YouTube для каждого PHP и запрашиваю видеопоток от конкретного пользователя в формате json. Результат после json_decode следующий (сокращенный пример):

stdClass Object
(
    [version] => 1.0
    [encoding] => UTF-8
    [feed] => stdClass Object
        (
            [xmlns] => http://www.w3.org/2005/Atom
            [xmlns$media] => http://search.yahoo.com/mrss/
            [xmlns$openSearch] => http://a9.com/-/spec/opensearchrss/1.0/
            [xmlns$gd] => http://schemas.google.com/g/2005
            [xmlns$yt] => http://gdata.youtube.com/schemas/2007
    )
)

Мой вопрос: как я могу получить доступ, например, к узлу "xmlns $ media" с помощью PHP? Внутри знака доллара это не сработает или есть способ, которого я еще не получил?

Ответы [ 2 ]

30 голосов
/ 07 декабря 2010

Это будет работать:

echo $object->feed->{'xmlns$media'};

В качестве альтернативы, вы можете указать json_decode вернуть массив:

$array = json_decode($json, true);
echo $array['feed']['xmlns$media'];
3 голосов
/ 07 декабря 2010

Если вы используете одинарные кавычки вместо двойных, знак доллара не будет оцениваться.Вообще говоря, вы должны привыкнуть использовать одинарные кавычки, если вам действительно не нужны двойные кавычки для чего-либо (например, экранированные шестнадцатеричные значения)

...