繁体   English   中英

我的PHP / JSON代码怎么了?

[英]What's wrong with my PHP/JSON code?

我一直在使用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",
...
}

您正在将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'];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM