使用美元符号作为节点名访问PHP对象 - 解析错误:语法错误,(T_CONSTANT_ENCAPSED_STRING)

时间:2014-03-26 08:15:23

标签: php json youtube-api xampp

在我们开始讨论这个问题之前,我已经找到了我正在处理的确切问题,但解决方案并没有解决我的问题。

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 $ googlePlus用户''   (T_CONSTANT_ENCAPSED_STRING),期待标识符(T_STRING)或   变量(T_VARIABLE)或' {'或者' $'在   第22行的C:\ Users \ astark \ Desktop \ charts \ youtube.php

我在某处看到,PHP的过时版本会导致与此类似的问题,所以我已经包含了一个指向JSBin(http://jsbin.com/yahevoyo)的链接,其中包含XAMPP设置的规格i&#39 ;跑步。在这一点上相当难倒,不确定它是否只是深夜到我这里,或者是一个更大的问题。请指教。

1 个答案:

答案 0 :(得分: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上测试了上述内容并且它可以工作。