使用PHP解码NHL JSON表

时间:2014-11-26 19:30:40

标签: php mysql json

我试图从nhl统计数据库(http://nhlwc.cdnak.neulion.com/fs1/nhl/league/playerstatsline/20142015/2/OTT/iphone/playerstatsline.json)中抓取nhl统计数据,然后将表格分成一系列玩家,其中包含元组(数量,目标,助攻,分数,罚分数)等等,然后将它们添加到SQL数据库中。到目前为止,我已经能够从页面获取信息,我想我已经把它变成了一个阵列,但我似乎无法把它分成单个玩家,他们的各自的统计数据。 这是我到目前为止所做的:(不多)

$url =    'http://nhlwc.cdnak.neulion.com/fs1/nhl/league/playerstatsline/20142015/2/OTT/iphone/playerstatsline.json';
$output = file_get_contents($url); 
$data = json_decode($output, true);
echo $output;
echo $data;

2 个答案:

答案 0 :(得分:2)

首先,您的源网址中存在错误。有一个例子可以说明如何用数组中的数据填充一组玩家。

$url = 'http://nhlwc.cdnak.neulion.com/fs1/nhl/league/playerstatsline/20142015/2/OTT/iphone/playerstatsline.json';
$output = file_get_contents($url);
$data = json_decode($output);


$skatersData = array();
foreach($data->skaterData as $sktr) {
    $skatersData[$sktr->id] = explode(',', $sktr->data);
}

var_dump($skatersData);

答案 1 :(得分:1)

您可以使用数组表示法($data['fieldName'])访问数据,因此对于您的JSON,您可以循环遍历每个滑块,如下所示;

foreach($data['skaterData'] as $sktr) {
    echo $sktr['id'] . " " . $sktr['data'];
}

然后,您可以根据需要为循环内的每个滑手使用$sktr[]中的值。您始终可以直接访问已解码数据中的其他值,例如$data['timestamp']

如果您从true删除$data = json_decode($output, true);,则应使用对象标记

foreach($data->skaterData as $sktr) {
    echo $sktr->id . " " . $sktr->data;
}

希望这有帮助。