You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP接口运行报Attempt to read property "url" on null如何解决

报错原因

这个警告由两处写法和返回结构不匹配导致:

  • 解析图片接口JSON时,你给json_decode()传了第二个参数true,这个配置会把JSON解析为关联数组,不是对象,不能用->的对象属性语法读值。
  • 从你打印的$imgCharacters结果看,这个接口返回的是一维关联结构,根本没有下标为0的元素,所以$imgCharacters[0]取到的是null,读null的url属性自然会抛警告。

第一个接口的语句能正常运行,是因为它返回的是索引数组结构的JSON,且你解析时没传第二个true参数,默认解析成对象数组,$characters[0]->fact的写法和结构匹配,所以没报错。

修复方法

按照你当前的解析逻辑,直接把错误的取值语句改成数组键名访问即可,不需要加[0]下标,修复后的代码如下:

<?php

$url = 'https://players-facts-api.herokuapp.com/api/v1/resources/players?number=1';
$imgUrl='https://random.cricket/players.json';
$data = file_get_contents($url);
$dataImg= file_get_contents($imgUrl);
$characters = json_decode($data);
$imgCharacters = json_decode($dataImg, true);

echo $characters[0]->fact;
// 修正图片地址取值逻辑
echo $imgCharacters['url'];
print_r($imgCharacters);

?>

如果你习惯用对象语法取值,可以把图片JSON的解析语句改成$imgCharacters = json_decode($dataImg);(去掉第二个true参数),对应取值写为echo $imgCharacters->url;即可,同样不需要加[0]下标。


内容的提问来源于stack exchange,提问作者Arctic Fox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 17:03:23