【问题标题】:Access a PHP-object with dollar-sign as node name - Parse error: syntax error, (T_CONSTANT_ENCAPSED_STRING)使用美元符号作为节点名称访问 PHP 对象 - 解析错误:语法错误,(T_CONSTANT_ENCAPSED_STRING)
【发布时间】:2014-05-04 12:01:33
【问题描述】:

在我们开始讨论之前,我已经找到了我正在处理的确切问题,但是该解决方案并不能解决我的问题。

Access a PHP-object with dollar-sign as node name

这里是相关的PHP代码。

$user = 'officialtiesto';

$artist_json = file_get_contents('https://gdata.youtube.com/feeds/api/users/' .  $user  . '?alt=json');
$artist_object = json_decode($artist_json, FALSE);

var_dump($artist_object->'yt$googlePlusUser');

我也试过这个:

var_dump($artist_object->{'yt$googlePlusUser'})

两者都向我显示以下错误:

解析错误:语法错误,意外的“yt$googlePlusUser” (T_CONSTANT_ENCAPSED_STRING),期望标识符 (T_STRING) 或 变量 (T_VARIABLE) 或 '{' 或 '$' 在 C:\Users\astar\Desktop\charts\youtube.php 第 22 行

我在某处读到过旧版本的 PHP 可能会导致类似的问题,因此我提供了一个指向 JSBin (http://jsbin.com/yahevoyo) 的链接,其中包含我正在运行的 XAMPP 设置的规范。在这个问题上非常难过,不确定它是否只是深夜影响我,还是一个更大的问题。请指教。

【问题讨论】:

    标签: php json youtube-api xampp


    【解决方案1】:

    首先,没有yt$googlePlusUser,它是yt$googlePlusUserId
    然后你错过了一个级别。而不是

    $artist_object->{'yt$googlePlusUserId'}
    

    使用

    $artist_object->entry->{'yt$googlePlusUserId'}
    

    最后,作为奖励,获得 ID:

    $artist_object->entry->{'yt$googlePlusUserId'}->{'$t'}
    

    或者,正如您提到的问题在answer 中所写,您可以使用$artist = json_decode($artist_json, true) 将JSON 对象转换为数组,并以$artist['entry']['yt$googlePlusUserId']['$t] 的身份访问该属性。

    更新:
    关于PHP版本等,你似乎安装了5.4.19,我在5.4.0上测试过上面的,它可以工作。

    【讨论】:

    • 看来我又是深夜编码的受害者了。非常感谢!
    猜你喜欢
    • 2011-05-21
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 2014-12-03
    • 2012-11-13
    相关资源
    最近更新 更多