1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/lkn2015-phpcookbook_3rd_translate

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
chapter1_strings_1.13_生成固定宽度的数据记录.md 3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 11:36 0f1959f

Глава 1. Строки

1.13. Генерация данных фиксированной ширины

Проблема

Вам необходимо отформатировать данные так, чтобы каждое поле имело фиксированную ширину.

Решение

Это можно сделать с помощью функции pack(), которая позволяет форматировать строки с добавлением серии пробелов перед и после строки. Пример 1-31 показывает, как преобразовать элементы массива в набор данных фиксированной ширины.

Пример 1-31:

$books = array( array('Elmer Gantry', 'Sinclair Lewis', 1927),
               array('The Scarlatti Inheritance','Robert Ludlum', 1971),
               array('The Parsifal Mosaic','William Styron', 1979) );
foreach ($books as $book) {
  print pack('A25A15A4', $book[0], $book[1], $book[2]) . "\n";
}

Обсуждение

  • Форматирующая строка A25A15A4 сообщает функции pack(), что для следующих параметров нужно оставить 25 байт пространства, 15 байт и 4 байта соответственно. Таким образом, функция pack() предоставляет эффективное решение для создания полей фиксированной ширины с пробелами.

  • Если вы хотите заполнить поля после строк другими символами вместо пробелов, вам нужно использовать функцию substr(), чтобы убедиться, что заполняемая строка не слишком длинная, и функцию str_pad(), чтобы гарантировать, что строка не будет слишком короткой. В примере 1-32 показано, как заполнить недостающие байты точками.

Пример 1-32:

$books = array( array('Elmer Gantry', 'Sinclair Lewis', 1927),
                array('The Scarlatti Inheritance','Robert Ludlum', 1971),
                array('The Parsifal Mosaic','William Styron', 1979) );
foreach ($books as $book) {
    $title = str_pad(substr($book[0], 0, 25), 25, '.');
    $author = str_pad(substr($book[1], 0, 15), 15, '.');
    $year = str_pad(substr($book[2], 0, 4), 4, '.');
    print "$title$author$year\n";
}

См. также

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/lkn2015-phpcookbook_3rd_translate.git
git@api.gitlife.ru:oschina-mirror/lkn2015-phpcookbook_3rd_translate.git
oschina-mirror
lkn2015-phpcookbook_3rd_translate
lkn2015-phpcookbook_3rd_translate
master