Глобальные предопределенные массивы

В PHP имеются предопределенные массивы с глобальной областью видимости. Их

называют автоглобальными или суперглобальными массивами, поскольку они доступны из любого сценария на языке PHP.

Из большого перечня таких массивов нас будут интересовать только два. Они хранят значения элементов формы HTML-документа, переданные из нее сценарию PHP для обработки на сервере:

- $_GET – содержит данные, переданные в сценарий как часть URL-адреса. Это происходит в том случае, когда в форме определен метод передачи METHOD=GET,

- $_POST – содержит данные, переданные из формы методом POST.

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

Например, серверному сценарию из HTML-формы было передано методом POST содержимое элемента формы с атрибутом NAME=”user_data”. Это значение может быть получено в сценарии как $_POST[“user_data”] – элемент массива $_POST с индексом “user_data”.

Пример: создать форму со следующими элементами (полями) и передать их значения PHP-сценарию методом POST:

<HTML>

<HEAD>

<TITLE>

Работа с формой

</title>

</head>

<BODY BGCOLOR=silver TEXT=blue>

<H3 ALIGN=center>

Работа с формой

</h3>

<H4 ALIGN=center>

Работу выполнил<BR>

студент группы ИС-09<BR>

Пупкин Василий<BR>

</h4>

<P>

<FORM METHOD=POST NAME="forma_1">

Ваша группа:<BR>

<SELECT NAME="GRUPPA" SIZE=1>

<OPTION VALUE=0>

<OPTION VALUE=1>ПИ-11

<OPTION VALUE=2>ИС-11

<OPTION VALUE=3>ИСс-10

<OPTION VALUE=4>ИС-09

</select>

<BR>

Ваша фамилия:

<INPUT TYPE=TEXT NAME="FAM" VALUE="" SIZE=20>

<BR>

<P>

<FIELDSET WIDTH=100>

<LEGEND>

Владение алгоритмическим языком:

</legend>

<BR>

<!--имя для всех CHECKBOX одно - массив LANG[]-->

<INPUT TYPE=CHECKBOX NAME=LANG[] VALUE=1>Pascal<BR>

<INPUT TYPE=CHECKBOX NAME=LANG[] VALUE=2>C<BR>

<INPUT TYPE=CHECKBOX NAME=LANG[] VALUE=3>C++<BR>

<INPUT TYPE=CHECKBOX NAME=LANG[] VALUE=4>JAVA<BR>

<INPUT TYPE=CHECKBOX NAME=LANG[] VALUE=5>PHP<BR>

</fieldset>

<BR>

Форма обучения:<BR>

<!--имя для всех радиокнопок одно - FORMA_OBUCH-->

<INPUT TYPE=RADIO NAME=FORMA_OBUCH VALUE=1>очная<BR>

<INPUT TYPE=RADIO NAME=FORMA_OBUCH VALUE=2>заочная<BR>

<BR>

<INPUT TYPE=SUBMIT VALUE="Отправить">

<BR>

<INPUT TYPE=RESET VALUE="Очистить">

<BR>

<?php

echo "<BR>Данные, полученные из формы:<BR>";

foreach ($_POST as $index=>$value)

{

echo "$index=>$value";

echo "<BR>";

}

echo "<BR>";

echo 'Выбранные CHECKBOX в массиве $_POST["LANG"]:<BR>';

foreach ($_POST["LANG"] as $index=>$value)

{

echo "$index=>$value";

echo "<BR>";

}

echo "<BR>";

echo 'Общая структура массива $_POST:<BR>';

var_dump($_POST);

echo "<BR>";

?>

</form>

</body>

</html>

Результат работы программы:

Работа с формой

Работу выполнил
студент группы ИС-09
Пупкин Василий

Глобальные предопределенные массивы - student2.ru

Данные, полученные из формы:
GRUPPA=>4
FAM=>Пупкин
LANG=>Array
FORMA_OBUCH=>1

Выбранные CHECKBOX в массиве $_POST["LANG"]:
0=>1
1=>2
2=>5

Общая структура массива $_POST:
array(4) { ["GRUPPA"]=> string(1) "4" ["FAM"]=> string(6) "Пупкин" ["LANG"]=> array(3) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "5" } ["FORMA_OBUCH"]=> string(1) "1" }

Дата и время

Дата и время хранятся в специальном формате timestamp (временная метка) как количество секунд, прошедших от 01.01.1970 00:00:00 GMT (Greenwich Mean Time – среднее время по Гринвичу).

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

Текущее системное время в формате timestamp (как целое количество секунд) можно получить с помощью функции time():

$now=time();

echo $now; // количество секунд

Для получения в этом же формате любого другого времени служит функция:

mktime(час, мин, сек, месяц, день, год);

$segodnja=mktime(9,14,50,3,26,2012);

echo $segodnja;

В качестве аргументов этой функции можно использовать как конкретные числа, так и имена переменных.

Все вычисления над датами и временем выполняются только в формате timestamp .

Пример: определить количество секунд, часов, дней и лет, прошедших от 19.09.1949 (день рождения автора) до текущей даты:

<?php

$now = time();

$born=mktime(2,15,30,9,19,1949);

$x=$now-$born;

echo $x, " секунд";

echo "<BR>";

$x=$x/60/60; //в часах

echo $x, " часов";

echo "<BR>";

$x=$x/24; //в днях

echo $x, " дней";

echo "<BR>";

$x=$x/365; //в годах

echo $x, " лет";

echo "<BR>";

?>

Результат работы программы:

1972450760 секунд
547902.98888889 часов
22829.291203704 дней
62.546003297818 лет

Для преобразования временной метки в привычное представление используется функция gettate(). В качестве необязательного параметра ей можно передать временную метку, а функция возвращает ассоциативный массив, содержащий информацию о дате. Если функции ничего не передается, то выводится информация о текущем моменте времени, полученном от функции time().

Возвращаемый функцией gettate()ассоциативный массив имеет следующую структуру:

seconds секунды, прошедшие после полной минуты (0 – 59),

minutes минуты, прошедшие после полного часа (0 – 59),

hours значение часов дня (0 – 23),

mday день месяца (1 – 31),

wday день недели (0 – 6),

mon месяц года (1 – 12),

year год – четыре цифры,

yday день года (0 – 365),

weekday день недели – название,

month месяц года – название,

0 метка времени:

$date_array = getdate();

foreach ($date_array as $index=>$value)

{

echo “$index => $value”;

echo “<BR>”;

}

На экран будет выведено:

seconds => 18
minutes => 42
hours => 9
mday => 21
wday => 6
mon => 4
year => 2012
yday => 111
weekday => Saturday
month => April
0 => 1334968938

Для представления даты и времени в требуемом формате как строки используется функция:

date(формат, число);

- число – количество секунд, прошедших с 01.01.1970 00:00:00 GMT -
функция mktime(час, мин, сек, месяц, день, год),

- формат – строка символов форматирования даты и времени.

Допустимые символы:

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

j – день месяца – одна или две цифры,

m – месяц – две цифры,

n – месяц – одна или две цифры,

Y – год – четыре цифры,

y – год – две цифры,

Н – часы – две цифры (от 00 до 23),

G – часы – одна цифра (от 0 до 23),

i – минуты – две цифры (от 00 до 59),

s – секунды – две цифры (от 00 до 59),

F – английское название месяца,

М – его трехбуквенное сокращение,

l – английское название дня недели,

D – его трехбуквенное сокращение.

Между символами форматирования можно использовать разделители:

D.m.Y

J-n-y

D/m/Y

H:i:s

Если второй параметр функции date() не указан, то предполагается текущее время:

date(“d.m.Y”); текущая дата в формате 27.03.2012

date(“d-m-Y H:i:s); текущие дата и время в формате 27-03-2012 12:35:28

Для обратного перевода текстовой строки, содержащей дату и время, в формат timestamp, служит функция:

strtotime(дата_время, число);

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

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

- названия месяцев и дней недели полностью или в трехбуквенном сокращении,

- названия элементов даты и времени:

Year

Month

Week

Day

Hour

Minute

Second

- слова:

ago – тому назад

now – сейчас

last – последний

next – следующий

this – этот

tomorrow – завтра

yesterday – вчера

- числа и знаки плюс и минус,

- временную зону gmt.

Примеры:

strtotime(“now”) – текущее время,

strtotime(“now + 48 hour”) – через два дня от текущего времени,

strtotime(“3 month ago”) – три месяца назад,

strtotime(“last Friday”) – предыдущая пятница,

strtotime(“next year”) – через год,

strtotime(“1949/09/19”) – 19.09.1949 00:00:00.

При возникновении ошибки преобразования функция возвращает -1.

Для проверки корректности введенной даты используется функция checkdate(месяц, день, год). Она возвращает true, если значение месяца находится между 1 и 12, значение дня приемлемо для данного месяца и года (учитывая високосный год), а значение года находится между 0 и 32767.

Функции

Функция – это конструкция, которая позволяет оформить блок программного кода

для многократного его использования.

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

Пример функций – математические функции PHP.

Пользовательские функции – это функции, определяемые самим программистом.

Структура функции:

function имя(список формальных параметров)

{

Наши рекомендации