@XenK

Сравнение массивов и вывод в таблицу?

Есть массив:
Array
(
    [oldAttributes] => Array
        (
            [id] => 1
            [city_id] => 5
            [status] => 0
            [name] => test1
        )

    [newAttributes] => Array
        (
            [id] => 1
            [city_id] => 8
            [status] => 0
            [name] => test2
        )

)


Нужно сравнить два массива и вывести html таблицу, чтобы получилось так:

f43c679939194af9a668d0ac9b6b47ad.PNG

Получилось сделать только так:
<table style="width: 100%;" border="1">
        <thead>
        <tr>
            <td>Attribute</td>
            <td>Value</td>
        </tr>
        </thead>
        <tbody>
        <?php if (!empty($params)) foreach ($params as $param => $val): ?>
            <?php foreach ($val as $k => $v): ?>
            <tr>
                <td><?= $k ?></td>
                <td><?= $v ?></td>
            </tr>
            <?php endforeach; ?>
        <?php endforeach; ?>
        </tbody>
    </table>
  • Вопрос задан
  • 147 просмотров
Решения вопроса 2
sergiks
@sergiks Куратор тега PHP
♬♬
Внутри <tbody>:

<?php
foreach ($params['oldAttributes'] as $oldName => $oldValue) {
  $newValue = $params['newAttributes'][$oldName];
  printf( "<tr><td>%s</td><td>%s</td><td>%s</td></tr>\n",
    $oldName,
    $oldValue,
    $newValue === $oldValue ? '' : $newValue
  );
}
?>

Предполагается, что список атрибутов в старом и новом всегда полностью совпадает. Иначе надо проверять.
Ответ написан
Комментировать
Для примера:
<?php foreach ($oldAttributes as $k => $v): ?>
            <tr>
                <td><?= $k ?></td>
                <td><?= $v ?></td>
                <td><?= $newAttributes[$k] ?></td>
            </tr>
            <?php endforeach; ?>


Или если у вас в params тот массив который вы показали выше, что вряд ли, учитывая ваш результат таблицы
<?php if (!empty($params)) foreach ($params["newAttributes"] as $param => $val): ?>
            <tr>
                <td><?= $k ?></td>
                <td><?= $v ?></td>
                <td><?= $params["oldAttributes"][$k] ?></td>
            </tr>
        <?php endforeach; ?>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы