在我们开始讨论这个问题之前,我已经找到了我正在处理的确切问题,但解决方案并没有解决我的问题。
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 ;跑步。在这一点上相当难倒,不确定它是否只是深夜到我这里,或者是一个更大的问题。请指教。
答案 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上测试了上述内容并且它可以工作。