Давайте теперь научимся формировать таблицы. Пусть у нас дан следующий массив, содержащий тексты ячеек таблицы:
<?php
$arr = [
['name' => 'user1', 'age' => 30, 'salary' => 500],
['name' => 'user2', 'age' => 31, 'salary' => 600],
['name' => 'user3', 'age' => 32, 'salary' => 700],
];
?>
Давайте с помощью цикла сформируем из этого массива следующий код:
<table>
<tr>
<tr>
<td>user1</td>
<td>30</td>
<td>500</td>
</tr>
<tr>
<td>user2</td>
<td>31</td>
<td>600</td>
</tr>
<tr>
<td>user3</td>
<td>32</td>
<td>700</td>
</tr>
</tr>
</table>
Вариант первый
Сформируем таблицу с помощью одного цикла,
вручную записав в теги td
элементы
подмассива:
<?php
echo '<table>';
foreach ($arr as $user) {
echo '<tr>';
echo "<td>{$user['name']}</td>";
echo "<td>{$user['age']}</td>";
echo "<td>{$user['salary']}</td>";
echo '</tr>';
}
echo '</table>';
?>
Такой способ даст нам более полный контроль, как над порядком ячеек, так и над возможностью в каждую ячейку добавить какие-то дополнительные данные, например, вот так:
<?php
echo '<table>';
foreach ($arr as $user) {
echo '<tr>';
echo "<td>{$user['name']}</td>";
echo "<td>{$user['age']} years</td>";
echo "<td>{$user['salary']} dollars</td>";
echo '</tr>';
}
echo '</table>';
?>
Вариант второй
Давайте сформируем нашу таблицу с помощью двух вложенных циклов:
<?php
echo '<table>';
foreach ($arr as $row) {
echo '<tr>';
foreach ($row as $cell) {
echo "<td>$cell</td>";
}
echo '</tr>';
}
echo '</table>';
?>
Такой способ удобен тем, что не нужно прописывать каждую ячейку таблицы отдельно. Однако, недостатком такого подхода становится потеря контроля.
Впрочем, контроль можно вернуть с помощью условий, вот так:
<?php
echo '<table>';
foreach ($arr as $row) {
echo '<tr>';
foreach ($row as $key => $cell) {
if ($key === 'salary') {
echo "<td>$cell dollars</td>";
} else {
echo "<td>$cell</td>";
}
}
echo '</tr>';
}
echo '</table>';
?>
Можно упросить наш код следующим образом:
<?php
echo '<table>';
foreach ($arr as $row) {
echo '<tr>';
foreach ($row as $key => $cell) {
if ($key === 'salary') {
$cell .= ' dollars';
}
echo "<td>$cell</td>";
}
echo '</tr>';
}
echo '</table>';
?>
Практическая задача
Дан следующий массив:
<?php
$products = [
[
'name' => 'product1',
'price' => 100,
'amount' => 5,
],
[
'name' => 'product2',
'price' => 200,
'amount' => 6,
],
[
'name' => 'product3',
'price' => 300,
'amount' => 7,
],
];
?>
Сформируйте с его помощью HTML таблицу.