Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Создание таблицы с помощью пробелов и других символов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Tyoma5891
Отправлено: 16 Августа, 2013 - 10:38:06
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




Здравствуйте!
у меня возникла такая задача, необходимо в конечном итоге получить такого вида таблицу:

|----------users1---------|----------users2---------|----------users1---------|----------users1---------|
| 1 | 2 | 3 | 4 |
| 5 | 6 | 7 | 8 |

данные в каждую ячейку получаем некой функцией rashet($i, $j), понимаю что проще всего делать подобные вещи через str_pad но не соображу как, вот пытался делать так:
PHP:
скопировать код в буфер обмена
  1.  
  2. for ($i = 1; $i <= $max; $i++)
  3. {
  4.        
  5.         foreach ($arr as $$j)
  6.         {
  7.                 echo '|' . str_pad(rashet($i, $j), 20);
  8.         }
  9.        
  10. }
  11.  

но не то да и как сделать "шапку" таблицы тоже не пойму как?
Заранее спасибо.
 
 Top
EuGen Администратор
Отправлено: 16 Августа, 2013 - 11:53:41
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Вам подойдёт такая реализация:
PHP:
скопировать код в буфер обмена
  1. function formatPlain($rgTitle, $rgData, $sColumnDelim='|', $sCrossDelim='+', $sLineDelim='-')
  2. {
  3.    if(!count($rgData) || !count($rgTitle) || count($rgData)!=count($rgTitle))
  4.    {
  5.       return null;
  6.    }
  7.    $rgData = array_merge([$rgTitle], $rgData);
  8.    $rgMax  = array_map(function($iIndex) use (&$rgData)
  9.    {
  10.       return max(array_map('strlen', array_column($rgData, $iIndex)))+2;
  11.    }, range(0, count($rgData)-1));
  12.    $sLine  = $sCrossDelim.join($sCrossDelim, array_map(function($iMax) use ($sLineDelim)
  13.    {
  14.       return str_repeat($sLineDelim, $iMax);
  15.    }, $rgMax)).$sCrossDelim;
  16.    $rgData = array_map(function($rgItem) use ($rgMax, $sColumnDelim)
  17.    {
  18.       foreach($rgItem as $iIndex=>$sData)
  19.       {
  20.          $rgItem[$iIndex] = str_pad(str_repeat(' ', floor(($rgMax[$iIndex]-strlen($sData))/2)).
  21.                             $sData.
  22.                             str_repeat(' ', floor(($rgMax[$iIndex]-strlen($sData))/2)), $rgMax[$iIndex]);
  23.       }
  24.       return $sColumnDelim.join($sColumnDelim, $rgItem).$sColumnDelim;
  25.    }, $rgData);
  26.    return $sLine.PHP_EOL.join(PHP_EOL.$sLine.PHP_EOL, $rgData).PHP_EOL.$sLine;
  27. }

Пример работы:
PHP:
скопировать код в буфер обмена
  1. $rgData  = [
  2.   [1, 'admin', 0, 'admin@test.dev'],
  3.   [3, 'someuser', 1, 'u@foo.dev'],
  4.   [4, 'newuser', 1, 'new@bar.dev']
  5. ];
  6. $rgTitle = ['id', 'login', 'role', 'long-long-long-email'];
  7.  
  8. echo formatPlain($rgTitle, $rgData, '!');

- результатом будет примерно следующее:
CODE (text):
скопировать код в буфер обмена
  1. +----+----------+------+----------------------+
  2. ! id !  login   ! role ! long-long-long-email !
  3. +----+----------+------+----------------------+
  4. ! 1  !  admin   !  0   !    admin@test.dev    !
  5. +----+----------+------+----------------------+
  6. ! 3  ! someuser !  1   !      u@foo.dev       !
  7. +----+----------+------+----------------------+
  8. ! 4  ! newuser  !  1   !     new@bar.dev      !
  9. +----+----------+------+----------------------+


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Tyoma5891
Отправлено: 16 Августа, 2013 - 12:51:14
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




EuGen пишет:
Вам подойдёт такая реализация:

спасибо но нужен какаой-то простой вариант решения мне эту табличку нужно выводить в консоль


Отредактировано администратором: EuGen, 16 Августа, 2013 - 13:01:50
Нет необходимости цитировать полностью
 
 Top
armancho7777777 Супермодератор
Отправлено: 16 Августа, 2013 - 12:55:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Tyoma5891 пишет:
мне эту табличку нужно выводить в консоль

А Вы пробовали выполнять SQL запрос в консоли ?
 
 Top
Ch_chov
Отправлено: 16 Августа, 2013 - 13:32:46
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




В pear есть такой пакет
http://pear.php.net/package/Console_Table/
 
 Top
Tyoma5891
Отправлено: 17 Августа, 2013 - 09:38:29
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




Всем спасибо задачу решил очень просто...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB