#php #arrays #codeigniter #dynamic #codeigniter-3
#php #массивы #codeigniter #динамический #codeigniter-3
Вопрос:
Я пытаюсь загрузить данные динамической таблицы, мой URI;
example.coma/admin/view/form/<form_id>
Мой модельный запрос;
public function getRecords($table, $form_id) {
$this->db->select('*');
$this->db->from($table);
$this->db->where('form_id', $form_id);
$query = $this->db->get();
if ($query->num_rows() > 0) {
return $query->result_array();
}
}
Это возвращает массив данных, мне нужно создать HTML-таблицу на основе этого массива.
Я покажу пример двух разных массивов, возвращаемых запросом.
Массив 1.
( select * from members where form_id = 123
)
Array
(
[0] => Array
(
[id] => 104
[member_no] =>
[firstname] => Peter
[lastname] => Keys
[address] => 17 main road
[email] => P3TER@HOTMAIL.CO.UK
[postcode] => UK123
[city] => London
[telnum] => 123123123
[fk_form_submission_id] => 123
)
)
Массив 2.
( select * from orders where form_id = 123
)
Array
(
[0] => Array
(
[colour] => blue
[type] => shirt
[age] => 34
[size] => medium
[quantity] => 2
[discount] => Y
[posted] => N
)
)
Чего я хочу добиться, так это отобразить вертикальную таблицу для отображения набора данных. Очевидно, что каждая таблица будет иметь разные имена строк, пример ниже;
Таблица 1.
--------------- -------
| ID | 104 |
--------------- -------
| Member Number | |
--------------- -------
| First Name | Peter |
--------------- -------
| Last Name | Keys |
--------------- -------
| etc | etc |
--------------- -------
Таблица 2.
-------- --------
| Colour | blue |
-------- --------
| P Type | shirt |
-------- --------
| Age | 34 |
-------- --------
| Size | medium |
-------- --------
| etc | etc |
-------- --------
Как я могу задать имена строк этой таблицы? Нужно ли мне создать еще один массив заголовков таблицы и объединить оба массива?
Приветствуются любые советы.
Комментарии:
1. вы можете сделать это с помощью
foreach
цикла
Ответ №1:
Я не уверен, что полностью понимаю — но если вы хотите динамически устанавливать ключи массива, вы можете сделать это с foreach
циклом как:
<table>
<tr><th>Key</th><th>Value</th></tr>
<?php foreach($res[0] as $key => $val)
echo '<tr><td>'. $key . '</td><td>' . $val . '</td></tr>'; ?>
</table>
Редактировать:
Если вы хотите изменить название ключей на что-то более отображаемое, я бы рекомендовал использовать другой массив для подкачки (большую часть времени это делается для перевода …).
$displayName = array("id" => "ID", "member_no" => "Member Number", "firstname" => "First Name" ..., "type" => "P type", ...);
foreach($res[0] as $key => $val)
echo '<tr><td>'. $displayName[$key] . '</td><td>' . $val . '</td></tr>';
Вы также можете использовать array_combine
, но для этого нужно знать, какие ключи у вас есть…
Обратите внимание, что это решение будет работать, только если отображаемое имя уникально для всех типов ключей
Комментарии:
1. @TheOrdinaryGeek — теперь, я думаю, я понимаю, в чем была ваша проблема — обновил свой пост