Мое имя Володя, мой возраст 18 лет.
Проверка существования переменной
Можно проверить, существует ли данная переменная, (то есть инициализирована или она). Для этого используется функция:
isset(переменная);
Если переменной в данный момент не существует (нигде ранее ей не присваивалось значение или она была удалена функцией unset() ), то функция isset() возвращает false, в противном случае – true:
$x = 5;
if (isset($x))
echo ‘<BR>Переменная $x существует, ‘, “ее значение равно $x<BR>”;
На экране появится:
Переменная $x существует, ее значение равно 5
Важно помнить, что мы не можем использовать в программе неинициализированную переменную – это породит предупреждение со стороны интерпретатора PHP.
Чтобы выяснить, является ли значение переменной пустым, используется функция:
empty(переменная);
Если значение переменной равно нулю, “0”, NULL,пустой строке (“”), false, переменная не объявлена или является пустым массивом, то эта функция возвращает true, в противном случае – false.
Чтобы проверить тип переменной, используются функции:
is_string(переменная);
is_int(переменная);
is_float(переменная);
is_null(переменная);
is_array(переменная);
is_numeric(переменная); - если переменная является числовой (integer, float) или строкой, содержащей только числа.
Эти функции возвращают true, если переменная имеет указанный тип.
Вывод данных
Бесформатный вывод
Бесформатный вывод строк или значений переменных осуществляется функцией:
echo список переменных;
echo строка;
где список переменных – имена выводимых переменных через запятые.
Если мы работаем с веб-браузером, то эта функция направляет вывод в клиентскую часть браузера (в его окно).
Как это уже было сказано, если в строке, заключенной в двойные кавычки, встречаются имена переменных, то на экран вместо этих имен выводятся соответствующие им значения. Более того, если в такой строке встречаются теги HTML (дескрипторы, заключенные в угловые скобки), то браузер отображает этот HTML-код так, как он должен это делать при интерпретации HTML-документа:
<?php
$year = 2012;
$message = “Желаю всем <B><I>счастья!</i></b>”;
echo “<H3 ALIGN=CENTER>Мои поздравления!</h3>”;
echo “Наступил $year год!<BR>$message<BR>”;
?>
На экран будет выведен заголовок уровня H3 и последующее приветствие, причем слово “счастья!” будет выведено полужирным курсивом:
Мои поздравления!
Наступил 2012 год!
Желаю всем счастья!
Так можно создавать динамические сайты.
Форматированный вывод
Форматированный вывод позволяет представлять выводимые числа в различных системах счисления, а в десятичной системе – в различных видах (форматах). Он похож на форматированный вывод в Си и осуществляется функциями:
printf(“формат”, список вывода);
sprintf(“формат”, список вывода);
Первая функция выводит в окно браузера отформатированные данные и возвращает их количество.
Вторая функция только форматирует выводимые данные, но не выводит их.
Формат – это последовательность описателей преобразований для выводимых значений.
Описатель преобразований для каждого значения имеет вид:
%ЗаполнительВыравниваниеДлина.ТочностьТип
- Заполнитель – это символ, который будет использоваться для дополнения результата преобразования до заданной длины (по умолчанию – пробел); если это другой символ, то перед ним ставится одинарная кавычка (апостроф),
- Выравнивание – по умолчанию – по правому краю поля вывода; если стоит минус (-), то по левому,
- Длина – ширина поля вывода - количество знакомест, отводимых для вывода этого значения. Если выводимое значение содержит меньше знакомест, чем заданная длина, то оставшееся пространство будет заполнено пробелами или символами заполнения,
- Точность – количество десятичных разрядов в дробной части числа,
- Тип – тип выводимого значения:
b – двоичное,
с – символ,
d – целое в десятичной системе счисления,
е – вещественное в экспоненциальной форме (с плавающей запятой),
f – вещественное в форме с фиксированной запятой,
s – строка,
о – целое в восьмеричной системе счисления,
x – целое в 16-ричной системе счисления.
Пример:
<?php
$zarp_1 = 6543.21;
$zarp_2 = 45321.67;
$fam_1 = "Балаганов";
$fam_2 = "Бендер";
printf("<H1>Платежная ведомость</h1>");
printf("%'.-12s%'.10.2f руб.", $fam_1, $zarp_1);
echo "<BR>";
printf("%'.-12s%'.10.2f руб.", $fam_2, $zarp_2);
echo "<BR>";
?>
В качестве заполнителя была выбрана точка (‘.) . Фамилии выравниваются по левому краю (-) в поле шириной 12 символов. Числа представляются в форме с фиксированной запятой в поле шириной 10 символов и с точностью 2 знака после запятой, с выравниванием по правому краю:
Платежная ведомость
Балаганов......6543.21 руб.
Бендер........45321.67 руб.
Внимание! В функции printf()ESC-последовательности (\n, \t) не срабатывают, а отображаются в виде пробелов. Для перехода на новую строку используйте функцию
echo “<BR>”;
Этот же пример с предварительно отформатированной строкой:
<?php
$zarp_1 = 6543.21;
$zarp_2 = 45321.67;
$fam_1 = "Балаганов";
$fam_2 = "Бендер";
$str="<H1>Платежная ведомость</h1>";
echo sprintf($str);
$str = "%'.-12s%'.10.2f руб.";
echo sprintf($str, $fam_1, $zarp_1);
echo "<BR>";
echo sprintf($str, $fam_2, $zarp_2);
echo "<BR>";
?>
Отладочная печать
При отладке программы может потребоваться полная информация о переменных. Для вывода такой информации в окно браузера используется функция:
var_dump(переменная);
Она выводит тип переменной и ее текущее значение:
<?php
$str = "Привет всем!";
$k = 2147483647;
$x = 3.14159265;
$y = true;
$z = NULL;
echo '$str: ';
var_dump($str);
echo "<BR>";
echo '$k: ';
var_dump($k);
echo "<BR>";
echo '$x: ';
var_dump($x);
echo "<BR>";
echo '$y: ';
var_dump($y);
echo "<BR>";
echo '$z: ';
var_dump($z);
echo "<BR>";
echo '$vasja: ';
var_dump($vasja);
echo "<BR>";
?>
Результат работы программы:
$str: string(12) "Привет всем!"
$k: int(2147483647)
$x: float(3.14159265)
$y: bool(true)
$z: NULL
$vasja: NULL
Форматирование чисел
Числа в PHP хранятся и выводятся в наиболее эффективном формате. В приложении может потребоваться отобразить число в некотором определенном формате, например, разделить группы разрядов пробелами, запятыми и т.д. Некоторые возможности по форматированию чисел предоставляют функции форматного вывода printf() и sprint().
Рассмотрим очень удобную функцию форматирования чисел:
number_format(переменная, точность, разделитель1, разделитель2);
Она преобразует исходное число в строку определенного вида:
- переменная – имя переменной или конкретное число, которое требуется форматировать. Если следующие параметры не заданы, то число округляется до ближайшего целого и разделяется на группы цифр по три разряда, между которыми ставится запятая:
$x=12345678980.621;
number_format($x);
Получается строка вида:
1,234,567,891
- точность – точность вывода – количество цифр в дробной части числа; параметр обязателен, если используются параметры разделитель1 и разделитель2:
$x=123456.789;
number_format($x, 2);
Получается строка вида:
123,456.79
- разделитель1 – символ, используемый для разделения целой и дробной части числа (по умолчанию – точка); параметр обязателен, если используется параметр разделитель2:
-
$x=123456.789;
number_format($x, 2, “,”, “ ”);
Получается строка вида:
123 456,79
- разделитель2 – символ, используемый для разделения групп по три разряда в целой части числа (по умолчанию – запятая); параметр обязателен, если используется параметр разделитель1.
Внимание! Результат работы этой функции – строка, а не число! Ее нельзя использовать в математических вычислениях!
Массивы
Массив в PHP представляет собой упорядоченный набор в общем случае разнотипных данных (элементов массива), объединенных под общим именем.
Каждый элемент имеет уникальный индекс (номер). Индексы могут быть:
- числовыми (0, 1, 2, 3, …) – в этом случае массив называется списком,
- символьными(‘a’, ‘b’, ‘c’, …),
- строковыми(‘имя’, ‘фамилия’, ‘дата рождения’, …) – в этом случае массив называется ассоциативным.
Создание массивов
Массив-список создается при первом присваивании определенного значения его элементу:
$my_array[] = “Иван”;
Создается массив-список $my_array, и его начальному элементу (элементу с индексом 0) присваивается значение “Иван”.
Внимание! Нумерация элементов массива-списка начинается с нуля!
К этому массиву можно добавлять другие элементы, используя тот же прием:
$my_array[] = “Иванов”; // элемент с индексом 1
$my_array[] = 25560; // элемент с индексом 2
Типы элементов массива могут быть различными. При добавлении очередного элемента в массив индекс его автоматически увеличивается на единицу (автоинкремент).
При создании массива можно сразу индексировать его элементы по своему усмотрению, причем не обязательно начинать с нуля:
$my_array[1] = “Иван”;
$my_array[2] = “Иванов”;
$my_array[3] = 25560;
Массив может быть создан также с помощью следующих конструкций:
- как список:
$my_array = array (“Иван”, “Иванов”, 25560);
var_damp($my_array); // вывод на экран
На экране появятся индексы в квадратных скобках, типы и значения элементов:
array(3) { [0]=> string(4) "Иван" [1]=> string(6) "Иванов" [2]=> int(25560) }
- как ассоциативный массив:
$my_array = array (‘Имя’=>“Иван”, ‘Фамилия’=>“Иванов”, ‘Зарплата’=>25560);
var_damp($my_array);
Внимание! Строковые индексы заключаются в одинарные кавычки!
На экране появятся индексы в квадратных скобках, типы и значения элементов:
array(3) { ["Имя"]=> string(4) "Иван" ["Фамилия"]=> string(6) "Иванов" ["Зарплата"]=> int(25560) }
Для вывода на экран элементов массива в PHP используется специальный цикл foreach – для каждого:
foreach (массив as значение_элемента)
{
Операторы цикла
}
- массив – имя массива,
- значение_элемента – переменная для чтения значения элемента массива.
foreach ($my_array as $value)
{
echo $value;
echo “<BR>”;
}
На экране появится:
Иван
Иванов
25560
Этим же циклом можно выводить не только значения элементов, но и их индексы:
foreach($my_array as $index=>$value)
{
echo $index, "=>", $value, "<BR>";
}
На экране появится:
Имя=>Иван
Фамилия=>Иванов
Зарплата=>25560
Для добавления элементов в массив можно использовать следующие способы:
- для массива-списка:
$my_array[] = “Профессор”;
- для ассоциативного массива:
$my_array[‘Должность’] = “Профессор”;
Для удаления элемента из массива используется функция unset(элемент):
unset($my_array[2]);
или
unset($my_array[‘Зарплата’]);
Удален элемент с индексом 2 (индексом ‘Зарплата’). При этом оставшиеся элементы сохраняют свои прежние индексы – переиндексации элементов массива не происходит. Этой же функцией можно удалить и весь массив:
unset($my_array);
Для определения количества элементов в массиве используются функции:
count(массив);
sizeof(массив);
$my_array = array (‘Имя’=>“Иван”, ‘Фамилия’=>“Иванов”, ‘Зарплата’=>25560, ‘Должность’=>“Профессор”);
$n = count($my_array);
echo “<BR>”, ‘$n=’, $n, “<BR>”;
На экране появится:
$n=4
Многомерные массивы
Элементами массива могут быть любые структуры, в том числе и другие массивы:
$sotrud = array
(
array("Иван","Иванов", 25560),
array("Петр","Петров", 32760),
array("Сидор","Сидоров", 18900),
array("Василий","Пупкин", 8650),
);
Создан массив $sotrud, имеющий четыре строки и три столбца (нумерация начинается с нуля). Каждый элемент этого массива имеет два индекса – номер строки и номер столбца. Как и в Си, они записываются в отдельных квадратных скобках:
$sotrud[2][0] //”Сидор”
Вывод на экран такого массива можно осуществить функцией var_damp():
var_damp($sotrud);
На экране появится:
array(4) { [0]=> array(3) { [0]=> string(4) "Иван" [1]=> string(6) "Иванов" [2]=> int(25560) } [1]=> array(3) { [0]=> string(4) "Петр" [1]=> string(6) "Петров" [2]=> int(32760) } [2]=> array(3) { [0]=> string(5) "Сидор" [1]=> string(7) "Сидоров" [2]=> int(18900) } [3]=> array(3) { [0]=> string(7) "Василий" [1]=> string(6) "Пупкин" [2]=> int(8650) } }
При использовании циклов for и foreach этот массив можно вывести построчно:
for ($i = 0; $i < count($sotrud); $i++)
{
echo "Строка $i:<BR>";
foreach($sotrud[$i] as $index=>$value)
{
echo $index, '=>',$value, "<BR>";
}
echo "<BR>";
}
На экране появится:
Строка 0:
0=>Иван
1=>Иванов
2=>25560
Строка 1:
0=>Петр
1=>Петров
2=>32760
Строка 2:
0=>Сидор
1=>Сидоров
2=>18900
Строка 3:
0=>Василий
1=>Пупкин
2=>8650
Для вывода элементов массива в составе текстовой строки последние берутся в фигурные скобки:
echo "Сотрудник {$sotrud[0][1]} получает {$sotrud[0][2]} руб.", "<BR>";
На экране появится: