Intereting Posts
Ошибка Mysql & PHP: количество столбцов не соответствует количеству значений в строке 1 Проверка триггера Yii на другом поле Контейнер Dependecy Injection не работает в Fixtures после обновления symfony 2.0 до 2.1 / 2.2 Загрузка нестандартных xml-данных wsman в объект с php Получить URL-адрес изображения из параметра twit api entity php Ошибка mysql: превышено максимальное количество подключений в час Как проверить сайт с помощью Google Analytics или нет CURL? Период подсчета циклов в PHP Как запустить команду из пакета в контроллере приложений в Symfony3? Показать значения из таблицы базы данных MySQL внутри таблицы HTML на веб-странице Возможно ли предварительно загружать содержимое страницы с помощью техники ajax / jquery? PHP: добавление месяцев к дате, не превышающих последний день месяца loadHTML LIBXML_HTML_NOIMPLIED на фрагменте html генерирует неправильные теги пакетный ориентир sql в php Оператор switch в PHP ввел HTML

Как вывести простую таблицу ascii в PHP?

У меня есть некоторые данные вроде:

Array ( [0] => Array ( [a] => largeeeerrrrr [b] => 0 [c] => 47 [d] => 0 ) [1] => Array ( [a] => bla [b] => 1 [c] => 0 [d] => 0 ) [2] => Array ( [a] => bla3 [b] => 0 [c] => 0 [d] => 0 ) ) 

И я хочу сделать вывод, например:

 title1 | title2 | title3 | title4 largeeeerrrrr | 0 | 47 | 0 bla | 1 | 0 | 0 bla3 | 0 | 0 | 0 

Каков простой способ достичь этого в PHP? Я бы хотел избежать использования библиотеки для такой простой задачи.

использовать printf

 $i=0; foreach( $itemlist as $items) { foreach ($items as $key => $value) { if ($i++==0) // print header { printf("[%010s]|", $key ); } printf("[%010s]|", $value); } echo "\n"; // don't forget the newline at the end of the row! } 

Это использует 10 пробелов. Как говорит BoltClock, вы, вероятно, захотите сначала проверить длину самой длинной строки, или ваша таблица будет разбита на длинные строки.

Другая библиотека с автоматической шириной столбцов.

  <?php $renderer = new ArrayToTextTable($array); echo $renderer->getTable(); 

В дополнение к Byron Whitlock: вы можете использовать usort () с обратным вызовом для сортировки по самому длинному значению массива. Пример:

 function lengthSort($a, $b){ $a = strlen($a); $b = strlen($b); if ($a == $b) { return 0; } return ($a < $b) ? -1 : 1; } 

Я знаю, что этот вопрос очень старый, но он появляется в моем поиске в Google и, возможно, помогает кому-то.

Есть еще один вопрос Stackoverflow с хорошими ответами, особенно этот, который указывает на модуль Zend Framework под названием Zend / Text / Table .

Надеюсь, это поможет.


Введение в Документы

Zend \ Text \ Table – это компонент для создания текстовых таблиц «на лету» с различными декораторами. Это может быть полезно, если вы хотите отправить структурированные данные в текстовые сообщения, которые используются для шрифтов с одним интервалом, или для отображения информации таблицы в приложении CLI. Zend \ Text \ Table поддерживает многострочные столбцы, colspan и выравнивание.


Основное использование

 $table = new Zend\Text\Table\Table(array('columnWidths' => array(10, 20))); // Either simple $table->appendRow(array('Zend', 'Framework')); // Or verbose $row = new Zend\Text\Table\Row(); $row->appendColumn(new Zend\Text\Table\Column('Zend')); $row->appendColumn(new Zend\Text\Table\Column('Framework')); $table->appendRow($row); echo $table; 

Вывод

 ┌──────────┬────────────────────┐ │Zend │Framework │ |──────────|────────────────────| │Zend │Framework │ └──────────┴────────────────────┘ 

Существует еще один рецепт: http://jkeks.com/archives/53

Для удобства просмотра таблицы текстовых таблиц конвертируются (\ t)