Как вывести данные в PHP из массивов JSON

Вопросы и ответы

У меня есть массив 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>';
?>

Объяснение кода

  1. Декодирование JSON: Используется json_decode() для превращения JSON строки в массив.
  2. Формирование таблицы: Вложенные циклы foreach позволяют итерироваться по всем уровням массива для организации информации в виде таблицы.
  3. Вставка в БД: В примере кода есть закомментированная часть, где вы можете вставить код для записи данных в базу данных. Используйте PDO для предотвращения SQL-инъекций.

Заключение

Этот код решит вашу задачу по выводу данных из JSON и их сохранению в базу данных. Не забудьте настроить соединение с базой данных перед сохранением данных.

Оцените материал
Добавить комментарий

Капча загружается...