如何解析从JSON解码得到的PHP数组?

4

我正在通过jQuery ajax调用向PHP脚本提交一些JSON数据。我认为ajax部分已经足够好了。但这是我使用的代码:

var testjson = '{"statistics":[{"player_id":"12","team_id":"8","points":"19"},{"player_id":"9","team_id":"8","points":"7"}],"teams":[{"homename":"Lakers","awayname":"Heat","webid":"48","hid":"49","aid":"48"}]}';

function postGameStats() {
jQuery.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "ajax-url.php",
    data: {"data":JSON.stringify(testjson)},
    success : function(data){
        alert(data);
    }
});
}

在我的PHP页面上,我想循环遍历解码后的JSON并将数据存储在我的数据库中。一旦我从数组中取出值,就可以存储它们。但是目前我无法从数组中获取它们!我似乎找不到一个能理解如何访问PHP中多维数组的解释。以下是我目前的PHP代码:

$finally = json_decode($_POST['data'], true);

$size = count($finally[1]);
$i = 0;
while ($i < ($size)) {
  echo $finally[$i].['statistics'].[$i].['player_id']; 
$i = $i + 1;
}

有人能指点我如何访问数组中的值吗?非常感谢!


你为什么要将一个字符串转换成字符串? - Musa
这是个很好的观点,Musa。因为我没有思考,只是将我在网上看到的各种教程组合起来。感谢你指出这一点! - Jonathon Doesen
3个回答

2

如果一个数组是由键(关联数组)而不是数字索引的话,你就不能访问这种类型的数组。因此,你需要使用 foreach()

foreach($myarray as $key => $val){
   echo $key." ".$val['innerkey'];
}

在你的情况下,应该是这样的。
   foreach($finally['statistics'] as $key => $val){
      echo $val[$key]['player'];
   }

当然,您可以使用print_r()函数来查看数组,以便了解如何访问它。
print_r($finally);

http://php.net/manual/en/control-structures.foreach.php

http://php.net/manual/en/function.print-r.php

http://php.net/manual/en/language.types.array.php


0

stringify 的问题在于反斜杠,执行以下操作即可解决问题:

$finally = json_decode(stripslashes($_POST['data']), true);

如果解决了,请告诉我。


0

上面的答案帮助了我很多。但最终有效的方法是按以下方式解析:

echo $finally["statistics"][1]["player_id"];

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