2013-06-06 37 views
4

我发布了一些JSON到PHP脚本。我通过jQuery ajax调用来做到这一点。我认为我的ajax部分工作得很好。但这里是我正在使用的代码:如何解析已从JSON解码的PHP数组?

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; 
} 

任何人都可以指出我如何访问数组中的值的正确方向?非常感谢!

+0

为什么你串字符串? – Musa

+0

这是一个伟大的观点,穆萨。因为我没有想到,只是结合了我在网上看到的各种教程的内容。感谢您指出了这一点! –

回答

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

与字符串化的问题是执行以下操作将解决问题的斜线:

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

让我知道,如果它解决了。

0

上面的答案帮了我很多。但最终工作是什么解析如下:

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