gpt4 book ai didi

php - fatal error : Cannot use object of type stdClass as array

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:55:01 25 4
gpt4 key购买 nike

我知道这可能很简单,我开始明白我需要怎么做,我意识到这与 OO 有关,但是因为我是 OO 和 json 的新手,所以我遇到了一些问题有了这个http://api.discogs.com/database/search?q=d&page=1&per_page=5它以 json 格式返回 5 个带有查询 d 的结果,所以我用 php 函数解析它,然后尝试显示第一个结果的缩略图 这是我的解析代码:

$returnData = file_get_contents($queryURL);
$discogsJSON = json_decode($returnData);

其中 $queryURL = 提供的 url。如果我打印 $discogsJSON 我得到这个:

<pre>stdClass Object
(
[pagination] => stdClass Object
(
[per_page] => 5
[items] => 179465
[page] => 1
[urls] => stdClass Object
(
[last] => http://api.discogs.com/database/search?q=f&per_page=5&page=35893
[next] => http://api.discogs.com/database/search?q=f&per_page=5&page=2
)

[pages] => 35893
)

[results] => Array
(
[0] => stdClass Object
(
[style] => Array
(
[0] => Free Jazz
)

[thumb] => http://api.discogs.com/image/R-90-1672955-1305426452.jpeg
[format] => Array
(
[0] => Vinyl
[1] => LP
[2] => Album
)

[country] => Switzerland
[title] => Steve Lacy - Clinkers
[uri] => /Steve-Lacy-Clinkers/master/54331
[label] => Array
(
[0] => Hat Hut Records
)

[catno] => F
[year] => 1978
[genre] => Array
(
[0] => Jazz
)

[resource_url] => http://api.discogs.com/masters/54331
[type] => master
[id] => 54331
)

[1] => stdClass Object
(
[style] => Array
(
[0] => Free Jazz
)

[thumb] => http://api.discogs.com/image/R-90-1672955-1305426452.jpeg
[format] => Array
(
[0] => Vinyl
[1] => LP
[2] => Album
)

[country] => Switzerland
[title] => Steve Lacy - Clinkers
[uri] => /Steve-Lacy-Clinkers/release/1672955
[label] => Array
(
[0] => Hat Hut Records
)

[catno] => F
[year] => 1978
[genre] => Array
(
[0] => Jazz
)

[resource_url] => http://api.discogs.com/releases/1672955
[type] => release
[id] => 1672955
)

[2] => stdClass Object
(
[style] => Array
(
[0] => Alternative Rock
[1] => Goth Rock
[2] => Heavy Metal
)

[thumb] => http://api.discogs.com/image/R-90-2785283-1300918365.jpeg
[format] => Array
(
[0] => CD
[1] => Compilation
[2] => Unofficial Release
)

[country] => Russia
[title] => HIM (2) - Overload Hits
[uri] => /HIM-Overload-Hits/release/2785283
[label] => Array
(
[0] => FullHouse Records
)

[catno] => F?????
[year] => 2003
[genre] => Array
(
[0] => Rock
)

[resource_url] => http://api.discogs.com/releases/2785283
[type] => release
[id] => 2785283
)

[3] => stdClass Object
(
[style] => Array
(
[0] => Drone
[1] => Ambient
)

[thumb] => http://api.discogs.com/image/R-90-3108621-1316178067.jpeg
[format] => Array
(
[0] => CDr
[1] => Album
[2] => Limited Edition
)

[country] => Russia
[title] => Solar Ocean - Twillight October
[uri] => /Solar-Ocean-Twillight-October/release/3108621
[label] => Array
(
[0] => Necrophone
)

[catno] => F
[year] => 2010
[genre] => Array
(
[0] => Electronic
)

[resource_url] => http://api.discogs.com/releases/3108621
[type] => release
[id] => 3108621
)

[4] => stdClass Object
(
[style] => Array
(
[0] => Techno
[1] => Electro
[2] => Tech House
[3] => Minimal
)

[thumb] => http://api.discogs.com/image/R-90-699054-1161976299.jpeg
[format] => Array
(
[0] => Vinyl
[1] => 12"
[2] => Box Set
[3] => Compilation
[4] => Limited Edition
)

[country] => Germany
[title] => Various - Cocoon Compilation F
[uri] => /Various-Cocoon-Compilation-F/master/33655
[label] => Array
(
[0] => Cocoon Recordings
[1] => Cocoon Compilation
)

[catno] => COR LP 011
[year] => 2006
[genre] => Array
(
[0] => Electronic
)

[resource_url] => http://api.discogs.com/masters/33655
[type] => master
[id] => 33655
)

)

)
</pre>

这是完全正确的,我可以看到我想要的所有数据,但是当我尝试像这样访问(假设是第一个缩略图)时:

echo $discogsJSON['results']['0']['thumb'];

我留下了: fatal error :无法将 stdClass 类型的对象用作数组

我想从这里有足够的信息可以用来构建正确的 echo 语句,但是谁能向我解释正确获取数据的方法背后的 OO 理论吗?

最佳答案

$discogsJSON 不是一个数组,而是一个 stdClass 对象。结果是此对象的属性。

这应该可以满足您的需求。

echo $discogsJSON->results['0']->thumb;

但是,向json_decode 添加一个true 标志以确保返回值是一个关联数组可能更方便。

$discogsJSON = json_decode($returnData, true);

关于php - fatal error : Cannot use object of type stdClass as array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17518095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com