我的PHP / JSON代码有什么问题?

时间:2013-12-29 04:33:59

标签: php json

我一直在使用ESPN API,我的目标是从JSON对象解析特定值并将它们保存到本地化文件中。我正在通过命令行运行我的程序,所以没有明显的错误,特别是对我来说 - PHP的新手。我已经运行了在Javascript中实现相同目标的代码,但切换到PHP因为我需要写入本地化文件,这是客户端脚本无法实现的。因此,我肯定我输入的JSON数组的路径是有效的。下面,我将包括PHP脚本,以及ESPN JSON对象的片段。最后,由于手头的问题太局部化,请不要报告问题。我不知道具体是什么问题,但一旦问题得到解答,我将相应地重命名和重新格式化帖子,以便将来帮助其他用户解决同类问题。

PHP脚本

<?php

$url = file_get_contents("http://api.espn.com/v1/sports/football/nfl/athletes?apikey=<sensitive>");
$data = json_decode($url, true);
$path = $data->sports[0]->leagues[0]->athletes;
$length = count($path);

for($i = 0; $i < $length; $i++) {
    $name = $data->sports[0]->leagues[0]->athletes[$i]->fullName;
    file_put_contents("Users/<sensitive>/Desktop/athletes.txt", $name);
}

?>

ESPN API JSON对象代码段

{
sports: [
{
name: "football",
id: 20,
uid: "s:20",
leagues: [
{
name: "National Football League",
abbreviation: "nfl",
id: 28,
uid: "s:20~l:28",
groupId: 9,
shortName: "NFL",
athletes: [
{
id: 14856,
firstName: "Isaako",
lastName: "Aaitui",
fullName: "Isaako Aaitui",
displayName: "Isaako Aaitui",
shortName: "I. Aaitui",
...
}

1 个答案:

答案 0 :(得分:0)

您正在使用json_decode,第二个参数设置为true,这意味着返回值是一个数组,而不是一个对象。

你有:

$data = json_decode($url, true);
$path = $data->sports[0]->leagues[0]->athletes;

你应该:

$data = json_decode($url, true);
$path = $data['sports'][0]['leagues'][0]['athletes'];