PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Описание: Вывод данных из массива в HTML таблицу
Поиск в теме | Версия для печати
IgorDiz
Отправлено: 01 Апреля, 2015 - 23:45:09
Новичок
Покинул форум
Сообщений всего: 4
Дата рег-ции: Апр. 2015
Помог: 0 раз(а)
Здравствуйте.
Существует массив данных, его нужно вывести в таблицу как в примере.
Как это лучше реализовать?
Спасибо.
PHP:
скопировать код в буфер обмена
(
(
[ period] => 1
[ interest_rate] => 10. 00
[ sum_min] => 100
[ currency_id] => 1
)
(
[ period] => 3
[ interest_rate] => 11. 00
[ sum_min] => 100
[ currency_id] => 1
)
(
[ period] => 3
[ interest_rate] => 5. 00
[ sum_min] => 100
[ currency_id] => 2
)
(
[ period] => 3
[ interest_rate] => 6. 00
[ sum_min] => 2000
[ currency_id] => 2
)
(
[ period] => 1
[ interest_rate] => 7. 00
[ sum_min] => 100
[ currency_id] => 3
)
(
[ period] => 3
[ interest_rate] => 8. 00
[ sum_min] => 200
[ currency_id] => 3
)
(
[ period] => 9
[ interest_rate] => 9. 00
[ sum_min] => 200
[ currency_id] => 3
)
)
Прикреплено изображение (Нажмите для увеличения) (Отредактировано автором: 01 Апреля, 2015 - 23:46:03)
Faraon-san
Отправлено: 02 Апреля, 2015 - 00:36:52
Посетитель
Покинул форум
Сообщений всего: 318
Дата рег-ции: Сент. 2013
Помог: 8 раз(а)
PHP:
скопировать код в буфер обмена
array ( 'period' => 1 , 'interest_rate' => 10.00 , 'sum_min' => 100 , 'currency_id' => 1
) , array ( 'period' => 3 , 'interest_rate' => 11.00 , 'sum_min' => 100 , 'currency_id' => 1
) , array ( 'period' => 1 , 'interest_rate' => 7.00 , 'sum_min' => 100 , 'currency_id' => 3
) , array ( 'period' => 3 , 'interest_rate' => 5.00 , 'sum_min' => 100 , 'currency_id' => 2
) , array ( 'period' => 3 , 'interest_rate' => 6.00 , 'sum_min' => 2000 , 'currency_id' => 2
) , array ( 'period' => 9 , 'interest_rate' => 9.00 , 'sum_min' => 200 , 'currency_id' => 3
) , array ( 'period' => 3 , 'interest_rate' => 8.00 , 'sum_min' => 200 , 'currency_id' => 3
) ) ;
foreach ( $array as $a )
{
$data [ $a [ 'currency_id' ] ] [ $a [ 'sum_min' ] ] [ $a [ 'period' ] ] = $a [ 'interest_rate' ] ;
}
$result = '<table style="width: 500px;"><thead><tr>' ;
$result .= '<th rowspan="2">Сумма взноса</th>' ;
$result .= '<th colspan="3">Срок/Процентная ставка</th>' ;
$result .= '</tr><tr>' ;
$result .= '<th>1 месяц</th>' ;
$result .= '<th>3 месяца</th>' ;
$result .= '<th>9 месяцев</th>' ;
$result .= '</tr></thead><tbody>' ;
foreach ( $data as $a => $b )
{
$result .= '<tr><td colspan="4">currency_id=' . $a . '</td></tr>' ;
foreach ( $b as $c => $d )
{
$result .= '<tr>' ;
$result .= '<td>' . $c . '</td>' ;
$count = array ( 1
=> false , 3
=> false , 9
=> false ) ; $empty = '<td>-</td>' ;
foreach ( $d as $e => $f )
{
switch ( $e )
{
case 1:
$result .= '<td>' . number_format ( $f , 2 , ',' , '' ) . '%</td>' . PHP_EOL
; $count [ 1] = true ;
break ;
case 3:
if ( ! $count [ 1] ) {
$result .= $empty ;
$count [ 1] = true ;
}
$result .= '<td>' . number_format ( $f , 2 , ',' , '' ) . '%</td>' . PHP_EOL
; $count [ 3] = true ;
break ;
case 9:
if ( ! $count [ 1] ) {
$result .= $empty ;
$count [ 1] = true ;
}
if ( ! $count [ 3] ) {
$result .= $empty ;
$count [ 3] = true ;
}
$result .= '<td>' . number_format ( $f , 2 , ',' , '' ) . '%</td>' . PHP_EOL
; $count [ 9] = true ;
break ;
}
}
foreach ( $count as $k => $v ) {
if ( ! $v ) {
$result .= $empty ;
}
}
$result .= '</tr>' ;
}
}
$result .= '</tbody></table>' ;
echo $result ;
(Отредактировано автором: 02 Апреля, 2015 - 00:46:20)
IgorDiz
Отправлено: 02 Апреля, 2015 - 01:14:30
Новичок
Покинул форум
Сообщений всего: 4
Дата рег-ции: Апр. 2015
Помог: 0 раз(а)
Faraon-san пишет: PHP:
скопировать код в буфер обмена
array ( 'period' => 1 , 'interest_rate' => 10.00 , 'sum_min' => 100 , 'currency_id' => 1
) , array ( 'period' => 3 , 'interest_rate' => 11.00 , 'sum_min' => 100 , 'currency_id' => 1
) , array ( 'period' => 1 , 'interest_rate' => 7.00 , 'sum_min' => 100 , 'currency_id' => 3
) , array ( 'period' => 3 , 'interest_rate' => 5.00 , 'sum_min' => 100 , 'currency_id' => 2
) , array ( 'period' => 3 , 'interest_rate' => 6.00 , 'sum_min' => 2000 , 'currency_id' => 2
) , array ( 'period' => 9 , 'interest_rate' => 9.00 , 'sum_min' => 200 , 'currency_id' => 3
) , array ( 'period' => 3 , 'interest_rate' => 8.00 , 'sum_min' => 200 , 'currency_id' => 3
) ) ;
foreach ( $array as $a )
{
$data [ $a [ 'currency_id' ] ] [ $a [ 'sum_min' ] ] [ $a [ 'period' ] ] = $a [ 'interest_rate' ] ;
}
$result = '<table style="width: 500px;"><thead><tr>' ;
$result .= '<th rowspan="2">Сумма взноса</th>' ;
$result .= '<th colspan="3">Срок/Процентная ставка</th>' ;
$result .= '</tr><tr>' ;
$result .= '<th>1 месяц</th>' ;
$result .= '<th>3 месяца</th>' ;
$result .= '<th>9 месяцев</th>' ;
$result .= '</tr></thead><tbody>' ;
foreach ( $data as $a => $b )
{
$result .= '<tr><td colspan="4">currency_id=' . $a . '</td></tr>' ;
foreach ( $b as $c => $d )
{
$result .= '<tr>' ;
$result .= '<td>' . $c . '</td>' ;
$count = array ( 1
=> false , 3
=> false , 9
=> false ) ; $empty = '<td>-</td>' ;
foreach ( $d as $e => $f )
{
switch ( $e )
{
case 1:
$result .= '<td>' . number_format ( $f , 2 , ',' , '' ) . '%</td>' . PHP_EOL
; $count [ 1] = true ;
break ;
case 3:
if ( ! $count [ 1] ) {
$result .= $empty ;
$count [ 1] = true ;
}
$result .= '<td>' . number_format ( $f , 2 , ',' , '' ) . '%</td>' . PHP_EOL
; $count [ 3] = true ;
break ;
case 9:
if ( ! $count [ 1] ) {
$result .= $empty ;
$count [ 1] = true ;
}
if ( ! $count [ 3] ) {
$result .= $empty ;
$count [ 3] = true ;
}
$result .= '<td>' . number_format ( $f , 2 , ',' , '' ) . '%</td>' . PHP_EOL
; $count [ 9] = true ;
break ;
}
}
foreach ( $count as $k => $v ) {
if ( ! $v ) {
$result .= $empty ;
}
}
$result .= '</tr>' ;
}
}
$result .= '</tbody></table>' ;
echo $result ;
Спасибо, отличное решение. Но как сделать если поле 'period' - 1,3,9 может быть разыным, например 1,3,6,9,12,24,36 ?
(Добавление)
Задача состоит в том, чтоб вывести из БД процентные ставки по вкладу, соответственно срок (поле 'period') может быть разным у разных вкладов.
Ниже массив еще одного примера вклада. Необходимо одной функцией одинаково выводить ставки с любыми сроками.
Как это сделать??
Спасибо за помощь.
Прикреплено изображение (Нажмите для увеличения) (Отредактировано автором: 02 Апреля, 2015 - 01:59:44)
IgorDiz
Отправлено: 02 Апреля, 2015 - 13:18:45
Новичок
Покинул форум
Сообщений всего: 4
Дата рег-ции: Апр. 2015
Помог: 0 раз(а)
Faraon-san пишет: расширь возможности switch и про переменную $count не забудь
Сделал по твоему примеру через " switch". Я пытался сделать похоже через "if", получалась большая куча кода..
Спасибо
(Отредактировано автором: 02 Апреля, 2015 - 13:19:33)
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB