Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 889

.pdf
Скачиваний:
4
Добавлен:
30.04.2022
Размер:
634.64 Кб
Скачать

Таблица 4 Спецификаторы преобразования, используемые

в функции printf()

Спецификатор

Преобразование, осуществляе-

Пример (для

 

мое с аргументом

аргумента

 

 

123)

%

Отображение символа % (ар-

%

 

гументы не требуются)

 

b

Отображение аргумента в виде

1111011

 

двоичного целого числа

 

c

Отображение ASCII-символа с

{

 

кодом, содержащимся в аргу-

 

 

менте

 

d

Отображение аргумента в виде

123

 

целого десятичного числа со

 

 

знаком

 

e

Отображение аргумента с ис-

1.23000e+2

 

пользованием экспоненциаль-

 

 

ной формы записи

 

f

Отображение аргумента в виде

123.000000

 

числа с плавающей точкой

 

 

 

 

o

Отображение аргумента в виде

173

 

восьмеричного целого числа

 

s

Отображение аргумента в виде

123

 

строки

 

 

 

 

u

Отображение аргумента в виде

123

 

беззнакового десятичного чис-

 

 

ла

 

 

 

 

x

Отображение аргумента в виде

7b

 

шестнадцатеричного числа с

 

 

символами в нижнем регистре

 

X

Отображение аргумента в виде

7B

 

шестнадцатеричного числа в

 

 

верхнем регистре

 

 

29

 

В функции printf можно использовать любое количество спецификаторов, если им передается соответствующее количество аргументов и если каждый спецификатор предваряется символом %.

Например, можно использовать функцию printf для установки цвета в коде HTML с помощью значений интенсивности красного, зеленого и синего цвета (RGB). Чтобы не переводить эти числа в шестнадцатеричный формат добавим их в функцию printf:

printf(“<font color=’#%X%X%X’>Привет</font>”, 65, 127,

245);

В данном случае, цвет устанавливается с помощью атрибута color тега font. В качестве значения указывается шестнадцатеричная константа, начинающаяся с символа #, за которым следуют три форматирующие спецификации %X, по одной для каждого из чисел. В результате эта команда выдаст следующий текст:

<font color=’#417FF5’>Привет</font>

Обычно представляется удобным в качестве аргументов printf использовать переменные или выражения. Например, если значения для цветового решения хранятся в трех переменных – $r, $g, $b, то более темный оттенок можно получить с помощью выражения

printf(“<font color=’#%X%X%X’>Привет</font>”, $r-20, $g-20, $b-20);

Настройка представления данных

Можно указать не только тип преобразования, но и точность отображаемого результата. Например, суммы в валюте отображаются, как правило, с точностью до двух цифр. Но в

30

общем случае, может получиться более точный результат (например, при использовании операции деления).

Чтобы отобразить число с точностью до двух цифр, можно между символом % и спецификатором преобразования вставить строку «.2»:

printf(“Результат: $%.2f”, 123.42 / 12);

Результат: $10.29 Можно также указать, где и чем – нулями или пробелами

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

<?php

echo “<pre>”;

//Дополнение пробелами до 15 знакомест printf(“Результат равен %15f\n”, 123.42 / 12); //Дополнение нулями до 15 знакомест printf(“Результат равен %015f\n”, 123.42 / 12); //Дополнение пробелами до 15 знакомест // и вывод с точностью до двух десятичных знаков

printf(“Результат равен %15.2f\n”, 123.42 / 12); //Дополнение нулями до 15 знакомест //и вывод с точностью до двух десятичных знаков

printf(“Результат равен %015.2f\n”, 123.42 / 12);

//Дополнение символами # до 15 знакомест //и вывод с точностью до двух десятичных знаков

printf(“Результат равен %’#15.2f\n”, 123.42 / 12);

?>

Это пример выводит следующий текст:

Результат равен

10.285000

Результат равен 00000010.285000

Результат равен

10.29

 

31

Результат равен 000000000010.29 Результат равен ##########10.29

Следует обратить внимание на следующие моменты:

самым правым символом спецификатора преобразования в данном случае является f, означающий преобразование в число с плавающей точкой;

если сразу же перед спецификатором преобразования стоит сочетание точки и числа, значит, этим числом указана точность выводимой информации;

независимо от присутствия спецификатора точности, если в общем спецификаторе присутствует число, то оно пред-

ставляет собой количество знакомест, выделяемых под выводимую информацию (в предыдущем примере это число 15);

если выводимая информация уже равна количеству выделяемых знакомест или превышает его, этот аргумент игнорируется;

перед самым левым символом % разрешается поставить символ 0, который игнорируется, если не указано количество выделяемых знакомест. Если это количество указано, то вместо

пробелов дополнение производится нулями;

– если нужно, чтобы пустующие знакоместа заполнялись не нулями или пробелами, а каким-нибудь другим символом, то можно выбрать любой символ, поставив перед ним одинарную кавычку: ‘#.

– в левой части спецификатора ставится символ %, с позиции которого и начинается преобразование.

Дополнение строк

Дополнить до требуемой длины можно не только числа, но и строки, выбирая для этого различные дополняющие символы и даже левую или правую границы выравнивания. Возможные варианты показаны в примере ниже:

32

<?php

echo “pre”;

$h = “Voronezh”; printf(“[%s]\n”, $h); printf(“[%15s]\n”, $h);

printf(“[%-15s]\n”, $h);

printf(“[%015s]\n”, $h); printf(“[%’#15s]\n”, $h); printf(“[%15.5s]\n”, $h);

printf(“[%-15.7s]\n”, $h);

?>

//Стандартный вывод строки //Выравнивание пробелами //по правому краю //Выравнивание пробелами //по левому краю //Дополнение нулями //Дополнение символами # //Выравнивание по правому //краю с усечением до //5 символов

//Выравнивание по левому //краю с усечением до //7 символов

Результат, выведенный на экран:

[Voronezh]

[ Voronezh] [Voronezh ] [0000000Voronezh] [#######Voronezh] [ Voron]

[Voronez ]

Если при указании количества знакомест длина строки уже равна этому количеству или превышает его, это указание будет проигнорировано, если только заданное количество символов, до которого нужно усечь строку, не будет меньше указанного количества знакомест.

33

Работа с датой и временем

Для отслеживания даты и времени в PHP используются стандартные отметки времени Unix, представляющие собой простое количество секунд, прошедших с начала отсчета – 1 января 1970 года. Для определения текущей отметки времени можно воспользоваться функцией time:

echo time();

Поскольку значение хранится в секундах, для получения отметки времени ровно через неделю можно воспользоваться следующим выражением, в котором к возвращаемому значению прибавляется 7 дней * 24 часа * 60 минут * 60 секунд:

echo time() + 7 * 24 * 60 * 60;

Если нужно получить отметку времени для заданной даты, можно воспользоваться функцией mktime. Она выводит отметку времени 946684800 для первой секунды первой минуты первого часа первого дня 2000 года:

echo mktime(0, 0, 0, 1, 1, 2000);

Этой функции передаются следующие параметры (слева направо):

количество часов (0 – 23);

количество минут (0 – 59);

количество секунд (0 – 59);

номер месяца (1 – 12);

номер дня (1 – 31);

год (1970 – 2038, или 1901 – 2038 при использовании

PHP 5.1.0 и выше).

Для отображения даты используется функция date, под-

держивающая множество настроек форматирования, позволя-

34

ющих выводить дату любым желаемым способом. Эта функция использует следующий синтаксис:

date ($format, $timestamp);

Параметр $format должен быть строкой, в которой содержатся спецификаторы форматирования, подробно описанные в табл. 5, а параметр $timestamp должен быть отметкой времени в стандарте Unix.

Следующая команда выводит текущее время и дату в формате «Thursday April 15th, 2010 – 1:38pm»:

echo date(“l F jS, Y – g:ia”, time());

Таблица 5 Основные спецификаторы формата в функции date

Формат

Описание

Возвращаемое

 

 

значение

 

Спецификаторы дня

d

День месяца, две цифры с

от 01 до 31

 

лидирующими нулями

 

 

 

 

D

День недели, составлен-

от Mon до Sun

 

ный из трех букв

 

j

День месяца без лидиру-

от 1 до 31

 

ющих нулей

 

 

 

 

l

День недели полностью

от Sunday до Satur-

 

 

day

N

День недели, число, от

от 1 до 7

 

понедельника до воскре-

 

 

сенья

 

S

Суффикс для дня месяца

st, nd, rd или th

w

День недели, число, от

от 0 до 6

 

воскресенья до субботы

 

Z

День года

от 0 до 365

 

 

 

 

Спецификатор недели

 

 

 

W

Номер недели в году

от 1 до 52

 

35

 

 

 

Продолжение табл. 5

 

Спецификаторы месяца

F

Название месяца

от January до Decem-

 

 

ber

 

 

 

m

Номер месяца с лидиру-

от 01 до 12

 

ющими нулями

 

M

Название месяца, состав-

от Jan до Dec

 

ленное из трех букв

 

n

Номер месяца без лиди-

от 1 до 12

 

рующих нулей

 

T

Количество дней в задан-

28, 29, 30 или 31

 

ном месяце

 

 

Спецификаторы года

L

Високосный год

1 – Да, 0 – Нет

Y

Год, четыре цифры

от 0000 до 9999

y

Год, две цифры

от 00 до 99

 

Спецификаторы времени

a

До или после полудня, в

am или pm

 

нижнем регистре

 

A

До или после полудня, в

AM или PM

 

верхнем регистре

 

 

 

 

g

Час суток, 12-часовой

от 1 до 12

 

формат без лидирующих

 

 

нулей

 

 

 

 

G

Час суток, 24-часовой

от 1 до 24

 

формат без лидирующих

 

 

нулей

 

h

Час суток, 12-часовой

от 01 до 12

 

формат с лидирующими

 

 

нулями

 

H

Час суток, 24-часовой

от 01 до 24

 

формат с лидирующими

 

 

нулями

 

 

36

 

 

 

Окончание табл. 5

i

Минуты с лидирующими

от 00 до 59

 

нулями

 

 

 

 

s

Секунды с лидирующими

от 00 до 59

 

нулями

 

Функция checkdate()

С помощью данной функции можно проверить корректность даты состоящей из дня, месяца и года. Она возвращает два значения: TRUE, если передана допустимая дата; FALSE – если нет.

Например:

<?php $month = 9;

$day = 31; $year = 2012;

if (checkdate($month, $day, $year)) echo “Допустимая дата”;

else

echo “Не допустимая дата”;

?>

В данном случае на экран будет выведена фраза «Недопустимая дата», т.к. проверяется существование даты 31 сентября 2012 года (в сентябре же, как известно, 30 дней).

2.3. Задания на лабораторную работу № 11

Задание № 1. Создать ассоциативный массив в виде данных о пользователе (логин, пароль, ID, дата регистрации, группа, дата последнего входа в систему). Вывести на экран данные из массива в виде таблицы.

Задание № 2. Создать массив из 10 целых чисел. Вывести его содержимое в виде таблицы, в первом столбце которой

37

представлены элементы в десятичной системе счисления, во втором – в двоичной, в третьем – в шестнадцатиричной. Значения элементов массива должны быть выровнены относительно друг друга.

Задание № 3. Составить программу, которая выводит на экран дату в определенном формате. Варианты задания приведены в табл. 6.

 

 

Таблица 6

 

Варианты задания № 3

 

№ вари-

Формат даты/времени (вместо указанной даты и

анта

времени должны быть текущие)

1

Mon 05th, April, 2014, 22:05:07

2

Monday 5.4.2014, 22:05:07

3

5-04-14, Monday, 22 h 05 min 07 sec

4

05.04.14, Mon, 10:05:07pm

5

Mon, 05 April 2014, 10:05:07PM

6

5th April 14, Monday, 22-05-07

7

05/04/2014, Mon, 22h 5m 7s

8

22:05:07, 5 April 2014, Monday

9

2014, April, 05th, 22-05-07, Monday

10

22:05:07, Mon, April,

5, 2014

11

2014, Monday, 5th April,

22-05-07

12

5th April 2014, 22 h 05 min 07 sec, Mon

 

 

13

April 5th, 2014, Mon, 22:05:07

 

 

14

05-04-2014, Monday, 22-05-07pm

 

 

15

Monday, 22:05:07, 2014, 5th April

 

 

16

2014, 22:05:07, Mon, 5th April

 

 

17

Monday, 22-05-07pm, 05/04/2014

 

 

18

05-04-2014, 22:05:07pm, Monday

38