Как я могу разобрать JSON в HTML-таблицу, используя PHP?

Я должен получить таблицу на моем сайте. И должны получить данные для этой таблицы от
«http://west.basketball.nl/db/json/stand.pl?szn_Naam=2014-2015&cmp_ID = 373«Я много чего пробовал, но ничего не получается ….

 <!DOCTYPE html>
<html>
<head>
<script type="text/javascript"src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>
<?php
$json=file_get_contents("http://west.basketball.nl/db/json
/stand.pl?szn_Naam=2014-2015&cmp_ID=373");
$data =  json_decode($json);

if (count($data)) {
// Open the table
echo "<table>";

// Cycle through the array
foreach ($data as $stand) {

// Output a row
echo "<tr>";
echo "<td>$afko</td>";
echo "<td>$positie</td>";
echo "</tr>";
}

// Close the table
echo "</table>";
}
?>
</body>
</html>

8

Решение

Хорошо, первое, что нужно сделать при получении данных из внешнего источника, это понять, что возвращается.

Ну действуй

<?php
$json=file_get_contents("http://west.basketball.nl/db/json/stand.pl?szn_Naam=2014-2015&cmp_ID=373");
$data =  json_decode($json);

print_r($data);

Результат:

stdClass Object
(
[stand] => Array
(
[0] => stdClass Object
(
[afko] => Risne Stars HS 1
[ID] => 2091
[status] => Actief
[gespeeld] => 3
[percentage] => 100.0
[punten] => 6
[tegenscore] => 149
[eigenscore] => 191
[datum] => 2014-10-05
[saldo] => 42
[team] => Risne Stars Heren 1
[positie] => 1
)

[1] => stdClass Object
(
[afko] => D.B.V. Arriba HS 2
[ID] => 1813
[status] => Actief
[gespeeld] => 2
[percentage] => 0.0
[punten] => 0
[tegenscore] => 116
[eigenscore] => 102
[datum] => 2014-10-05
[saldo] => -14
[team] => D.B.V. Arriba Heren 2
[positie] => 10
)

[2] => stdClass Object
(
[afko] => The Valley Bucketeers HS 2
[ID] => 2430
[status] => Actief
[gespeeld] => 2
[percentage] => 0.0
[punten] => 0
[tegenscore] => 177
[eigenscore] => 70
[datum] => 2014-10-05
[saldo] => -107
[team] => The Valley Bucketeers Heren 2
[positie] => 11
)

[3] => stdClass Object
(
[afko] => Uitsmijters HS 2
[ID] => 2143
[status] => Actief
[gespeeld] => 2
[percentage] => 100.0
[punten] => 4
[tegenscore] => 79
[eigenscore] => 161
[datum] => 2014-10-05
[saldo] => 82
[team] => Uitsmijters Heren 2
[positie] => 2
)

[4] => stdClass Object
(
[afko] => Picker Reds HS 1
[ID] => 2056
[status] => Actief
[gespeeld] => 3
[percentage] => 66.7
[punten] => 4
[tegenscore] => 193
[eigenscore] => 184
[datum] => 2014-10-05
[saldo] => -9
[team] => Picker Reds Heren 1
[positie] => 3
)

[5] => stdClass Object
(
[afko] => Peatminers HS 2
[ID] => 6247
[status] => Actief
[gespeeld] => 1
[percentage] => 100.0
[punten] => 2
[tegenscore] => 36
[eigenscore] => 64
[datum] => 2014-10-05
[saldo] => 28
[team] => Peatminers Heren 2
[positie] => 4
)

[6] => stdClass Object
(
[afko] => Jolly Jumpers HS 1
[ID] => 1994
[status] => Actief
[gespeeld] => 2
[percentage] => 50.0
[punten] => 2
[tegenscore] => 103
[eigenscore] => 119
[datum] => 2014-10-05
[saldo] => 16
[team] => Jolly Jumpers Heren 1
[positie] => 5
)

[7] => stdClass Object
(
[afko] => TONEGO '65 HS 2
[ID] => 2120
[status] => Actief
[gespeeld] => 2
[percentage] => 50.0
[punten] => 2
[tegenscore] => 107
[eigenscore] => 122
[datum] => 2014-10-05
[saldo] => 15
[team] => TONEGO '65 Heren 2
[positie] => 6
)

[8] => stdClass Object
(
[afko] => Amical HS 2
[ID] => 1791
[status] => Actief
[gespeeld] => 3
[percentage] => 33.3
[punten] => 2
[tegenscore] => 180
[eigenscore] => 195
[datum] => 2014-10-05
[saldo] => 15
[team] => Amical Heren 2
[positie] => 7
)

[9] => stdClass Object
(
[afko] => S.V.Z.W. HS 2
[ID] => 5526
[status] => Actief
[gespeeld] => 3
[percentage] => 33.3
[punten] => 2
[tegenscore] => 174
[eigenscore] => 151
[datum] => 2014-10-05
[saldo] => -23
[team] => S.V.Z.W. Heren 2
[positie] => 8
)

[10] => stdClass Object
(
[afko] => Twente Buzzards HS 3
[ID] => 2294
[status] => Actief
[gespeeld] => 3
[percentage] => 33.3
[punten] => 2
[tegenscore] => 196
[eigenscore] => 151
[datum] => 2014-10-05
[saldo] => -45
[team] => Twente Buzzards Heren 3
[positie] => 9
)

)

[nummer] => OHS2C
[version] => 1.0
[aantal_teams] => 11
[id] => 373
[seizoen] => 2014-2015
[naam] => Oost Afdeling Heren Senioren 2e klasse C
[gewijzigd] => 2014-10-05 18:34:25
)

Итак, теперь вы знаете, что имеете дело с ОБЪЕКТОМ, а не со скалярными значениями или массивом.

Так что попробуйте этот код: —

<?php
$json=file_get_contents("http://west.basketball.nl/db/json/stand.pl?szn_Naam=2014-2015&cmp_ID=373");
$data =  json_decode($json);

if (count($data->stand)) {
// Open the table
echo "<table>";

// Cycle through the array
foreach ($data->stand as $idx => $stand) {

// Output a row
echo "<tr>";
echo "<td>$stand->afko</td>";
echo "<td>$stand->positie</td>";
echo "</tr>";
}

// Close the table
echo "</table>";
}
?>
14

Другие решения

Если вы хотите рекурсивный способ:

public static function jsonToDebug($jsonText = '')
{
$arr = json_decode($jsonText, true);
$html = "";
if ($arr && is_array($arr)) {
$html .= self::_arrayToHtmlTableRecursive($arr);
}
return $html;
}

private static function _arrayToHtmlTableRecursive($arr) {
$str = "<table><tbody>";
foreach ($arr as $key => $val) {
$str .= "<tr>";
$str .= "<td>$key</td>";
$str .= "<td>";
if (is_array($val)) {
if (!empty($val)) {
$str .= self::_arrayToHtmlTableRecursive($val);
}
} else {
$str .= "<strong>$val</strong>";
}
$str .= "</td></tr>";
}
$str .= "</tbody></table>";

return $str;
}

Тогда позвони echo YourClass::jsonToDebug($jsonText);

Мой тест на http://sandbox.onlinephpfunctions.com/

15

Почему бы не попробовать:

$data = json_decode($json, true);
1

Я думаю, проблема в переменных, которые вы используете — $afko а также $positie, Пожалуйста, попробуйте с приведенным ниже кодом —

// Cycle through the array
foreach ($data as $stand) {
// Output a row
echo "<tr>";
echo "<td> . $stand['afko'] . </td>";
echo "<td> . $stand['positie'] . </td>";
echo "</tr>";
}
0
По вопросам рекламы [email protected]