У меня есть массив JSON, и я хочу вывести его с помощью PHP в таблице, а затем сохранить все в базе данных.
json:
JSON
array (
0 =>
array (
‘countryCode’ => ‘GB’,
‘mailTypes’ =>
array (
0 =>
array (
‘mailType’ => ‘MediumCorrespondence’,
‘services’ =>
array (
0 =>
array (
‘serviceType’ => ‘Tracked’,
‘weights’ =>
array (
0 =>
array (
‘name’ => ‘1-100 g.’,
‘weightFromGram’ => 1,
‘weightToGram’ => 100,
‘sendingTariff’ =>
array (
‘tariffType’ => NULL,
‘amount’ => 4.15,
‘variantId’ => 1144254,
‘includedTariffTypes’ =>
array (
0 => ‘Priority’,
),
‘requiredTariffTypes’ => NULL,
),
‘availableTariffs’ =>
array (
),
),
Мой код:
$results = json_decode($content, true);
echo '<table>';
foreach($results as $result){
echo '<tr>';
echo '<td>'.$result['countryCode'].'</td>';
echo '</tr>';
}
echo '</table>';
echo '<table>';
foreach($result['mailTypes'] as $mailtype){
echo '<tr>';
echo '<td>'.$mailtype['mailType'].'</td>';
echo '</tr>';
}
echo '</table>';
echo '<table>';
foreach($results['services'] as $service){
echo '<tr>';
echo '<td>'.$service['serviceType'].'</td>';
echo '</tr>';
}
echo '</table>';
Вывод:
GB
MediumCorrespondence
Warning: Invalid argument supplied for foreach() in
Ответ
Чтобы вывести данные из JSON массивов в таблицу с помощью PHP и затем сохранить их в базе данных, вам нужно исправить ваш код и добавить необходимые шаги. Вот пошаговое решение вашей задачи на основе предоставленного JSON примера.
1. Декодирование JSON
Сначала убедитесь, что вы правильно декодируете JSON строку. Используйте json_decode()
, чтобы получить ассоциативный массив.
2. Формирование HTML таблицы
Затем, создайте HTML таблицу, в которой будет выводиться информация о странах, типах почты и услугах.
3. Сохранение в базу данных
Не забудьте использовать PDO или MySQLi для безопасной работы с базой данных.
Пример кода
Вот полный код, который решает вашу задачу:
<?php
// Ваш JSON содержимое
$content = '[
{
"countryCode": "GB",
"mailTypes": [
{
"mailType": "MediumCorrespondence",
"services": [
{
"serviceType": "Tracked",
"weights": [
{
"name": "1-100 g.",
"weightFromGram": 1,
"weightToGram": 100,
"sendingTariff": {
"tariffType": null,
"amount": 4.15,
"variantId": 1144254,
"includedTariffTypes": ["Priority"],
"requiredTariffTypes": null
},
"availableTariffs": []
}
]
}
]
}
]
}
]';
// Декодирование JSON
$results = json_decode($content, true);
// Проверка на ошибки
if (json_last_error() !== JSON_ERROR_NONE) {
die('Ошибка декодирования JSON: ' . json_last_error_msg());
}
// Вывод таблицы
echo '<table border="1">';
echo '<tr><th>Country Code</th><th>Mail Type</th><th>Service Type</th><th>Weight</th><th>Amount</th></tr>';
foreach ($results as $result) {
$countryCode = $result['countryCode'];
foreach ($result['mailTypes'] as $mailType) {
$mailTypeName = $mailType['mailType'];
foreach ($mailType['services'] as $service) {
$serviceType = $service['serviceType'];
foreach ($service['weights'] as $weightInfo) {
$weightName = $weightInfo['name'];
$amount = $weightInfo['sendingTariff']['amount'];
// Вывод данных в таблицу
echo "<tr>";
echo "<td>{$countryCode}</td>";
echo "<td>{$mailTypeName}</td>";
echo "<td>{$serviceType}</td>";
echo "<td>{$weightName}</td>";
echo "<td>{$amount}</td>";
echo "</tr>";
// Здесь можно добавить код для вставки в базу данных
// Пример:
/*
$stmt = $pdo->prepare("INSERT INTO your_table (country_code, mail_type, service_type, weight, amount) VALUES (?, ?, ?, ?, ?)");
$stmt->execute([$countryCode, $mailTypeName, $serviceType, $weightName, $amount]);
*/
}
}
}
}
echo '</table>';
?>
Объяснение кода
- Декодирование JSON: Используется
json_decode()
для превращения JSON строки в массив. - Формирование таблицы: Вложенные циклы
foreach
позволяют итерироваться по всем уровням массива для организации информации в виде таблицы. - Вставка в БД: В примере кода есть закомментированная часть, где вы можете вставить код для записи данных в базу данных. Используйте PDO для предотвращения SQL-инъекций.
Заключение
Этот код решит вашу задачу по выводу данных из JSON и их сохранению в базу данных. Не забудьте настроить соединение с базой данных перед сохранением данных.