在PHP中将JSON文件解析为数组

4

我目前正在尝试从JSON文件中读取坐标并将它们保存到数组中以供进一步使用。然而,我没有成功地读取该文件。我的JSON文件具有以下格式(我只关注cX和cY):

{
    "cX": [
        246,
        1253,
        1464,
        1183
    ],
    "cY": [
        223,
        138,
        383,
        114
    ],
    "scroll": [
        0,
        90,
        0,
        0
    ],
    "sessionID": [
        "f06807c10fb31d5530ad8c4236b94ee2",
        "f06807c10fb31d5530ad8c4236b94ee2",
        "f06807c10fb31d5530ad8c4236b94ee2",
        "f06807c10fb31d5530ad8c4236b94ee2"
    ],
    "Time": [
        "11:30:01",
        "11:30:02",
        "11:30:03",
        "11:30:03"
    ],
    "elem": [
        "H1",
        "H1",
        "H1",
        "BODY"
    ]
}

我正在尝试使用以下PHP代码:

<?php
  $string = file_get_contents("./PHP/JSON/clicks.json");
  $json_a = json_decode($string, true);
  for($idx = 0; $idx < count($json_a); $idx++){
    $obj = (Array)$json_a[$idx];
    echo $obj["cX"];
?>

实际问题是什么? - mithrop
2个回答

10
<?php
  $string = file_get_contents("./PHP/JSON/clicks.json");
  $json_a = json_decode($string);
  $cx = $json_a->cX;
  $cy = $json_a->cY;
?>

我希望您能从中受益。

3
json_decode() 不需要使用 true,因为它会将对象转换为数组。 - gaurav
1
建议更改此帖子,因为它是错误的:$json_a = json_decode($string, true); 会生成一个关联数组,需要通过$json_a[cX]来访问。尝试访问属性$json_a->cX会返回null。建议:移除true。现在我花了5分钟才弄清楚问题出在哪里。 - Jelle Veraa

0

看起来你正在尝试遍历一个对象而不是一个数组。如果你在 JSON 周围加上方括号,你的脚本应该可以工作。否则,直接读取 cX 和 cY 属性,不需要遍历对象。

$obj = $json_a["cX"];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接