Вы находитесь на странице: 1из 186
Игорь Борисов http://igor-borisov.ru
Игорь Борисов
http://igor-borisov.ru
 Установка/настройка веб-сервера и PHP  Основы PHP  Циклы 

Установка/настройка веб-сервера и PHP

Основы PHP

Циклы

Пользовательские функции

Что внутри PHP?

Изучаем HTTP: формы

 Знания HTML/CSS  Умения работать с компьютером  Умения

Знания HTML/CSS

Умения работать с компьютером

Умения создавать, перемещать и удалять файлы и папки

Умения работать в текстовом редакторе

Умения работать с клавиатурой

быстро

знание сочетаний клавиш

Ctrl+N, Ctrl+O, Ctrl+S

Ctrl+A, Ctrl+C, Ctrl+X, Ctrl+V, Ctrl+Z

Shift+Home, Shift+End, Shift+Ctrl+стрелки

Игорь Борисов http://igor-borisov.ru
Игорь Борисов
http://igor-borisov.ru
 Вопросы, на которые надо ответить  Как это работает? 

Вопросы, на которые надо ответить

Как это работает?

Установка веб-сервера

Настройка веб-сервера

Установка PHP

Настройка PHP

Первый скрипт на PHP

 Только ли РНР?  Почему РНР?  Что такое "интерпретатор"?

Только ли РНР?

Почему РНР?

Что такое "интерпретатор"?

Что значит "встраиваемый язык"?

Возможности РНР

Зачем нужен сервер?

Что такое "сервер"?

Только ли Apache?

Почему Apache?

<html> <head> <title> Мой сайт </title> </head> <body>
<html> <head> <title> Мой сайт </title> </head> <body>
<html>
<head>
<title>
Мой сайт
</title>
</head>
<body>
<p>
Простая HTML-страница
</p>
</body>
</html>

index.html

Веб-сервер <html>
Веб-сервер
<html>
… <p> Простая HTML-страница </p> </body> </html>
<p>
Простая HTML-страница
</p>
</body>
</html>
Модуль сервера <html> <head> <title> Мой сайт </title>
Модуль сервера <html> <head> <title> Мой сайт </title>

Модуль сервера

Модуль сервера <html> <head> <title> Мой сайт </title>
Модуль сервера <html> <head> <title> Мой сайт </title>
<html> <head> <title> Мой сайт </title> </head> <body>
<html>
<head>
<title>
Мой сайт
</title>
</head>
<body>
<p>2 + 2 =
<?php print 2+2;?>
</p>
</body>
</html>
php код
Веб-сервер
Веб-сервер
</html> php код Веб-сервер index.php <html> … <p>2 + 2 = 4
</html> php код Веб-сервер index.php <html> … <p>2 + 2 = 4
index.php <html> … <p>2 + 2 = 4 </p> </body> </html>
index.php
<html>
<p>2 + 2 = 4
</p>
</body>
</html>
Веб-сервер index.php <html> … <p>2 + 2 = 4 </p> </body> </html>
 Сервер Apache  http://httpd.apache.org/  Сервер Microsoft IIS  http://www.iis.net/ 

Сервер Apache

http://httpd.apache.org/

Сервер Microsoft IIS

http://www.iis.net/

Сборка Денвер

http://www.denwer.ru/

Сборка XAMPP

http://www.apachefriends.org/ru/xampp.html

Сборка Wamp Server

http://www.wampserver.com

Сборка EasyPHP

http://www.easyphp.org/

http://open-server.ru
http://open-server.ru

http://open-server.ru

Лабораторная работа 1.1

Подготовка рабочего места

Упражнение 1: Создание виртуального хоста и запуск сервера

• Откройте проводник Windows

• Перейдите в директорию C:\Пользователи\Общие\OpenServer\domains\

(Внимание! В некоторых ситуациях русскоязычному пути C:\Пользователи\Общие\ соответствует англоязычный путь C:\Users\Public\. Это одно и тоже. )

• В этой директории создайте папку mysite.local

• Запустите сервер. Для этого нажмите [ Пуск -> Open Server ]

(На всякий случай, сама программа находится по пути C:\Пользователи\Общие\OpenServer\Open Server.exe )

• В правом нижнем углу (рядом с часами) кликните по иконке с красным флажком

• В открывшемся меню выберите первый пункт Запустить

• Дождитесь пока цвет иконки с флажком изменится с желтого на зеленый

• Если запуск закончился неудачей - флажок опять стал красным, то кликните по иконке, выберите последний пункт Выход и повторите последние 4 пункта

Упражнение 2: Копирование необходимых файлов

• Получите у преподавателя архив с файлами для работы на курсе

• Скопируйте файл в созданную в предыдущем упражнении директорию C:\Пользователи\Общие\OpenServer\domains\mysite.local\

• Распакуйте файл в текущую директорию

• Запустите браузер и в адресной строке наберите: http://mysite.local/

• Убедитесь, что сайт работает

Лабораторная работа 1.2

Создание файла .htaccess

Упражнение 1: Создание файла конфигурации директории

• Откройте текстовый редактор

• В текстовом редакторе создайте новый файл и напишите следующий текст:

# Настройки сервера Apache

Options Indexes FollowSymLinks DirectoryIndex index.php

• Сохраните файл в папке C:\Пользователи\Общие\OpenServer\domains\mysite.local\ под именем .htaccess

• Запустите браузер и в адресной строке наберите: http://mysite.local/

• Убедитесь, что нет ошибок и сайт работает

http://php.net
http://php.net

http://php.net

 conf\httpd.conf  LoadModule php5_module "путь-к-php/php5apache2_2.dll"  AddType

conf\httpd.conf

LoadModule php5_module

"путь-к-php/php5apache2_2.dll"

AddType application/x-httpd-php .php

Лабораторная работа 1.3

Первый скрипт

Упражнение 1: Вывод системной информации

• Откройте текстовый редактор

• В текстовом редакторе создайте новый файл и напишите следующий текст:

<?php

phpinfo();

?>

• Сохраните файл в папке C:\Пользователи\Общие\OpenServer\domains\mysite.local под именем info.php

• Запустите браузер и в адресной строке наберите: http://mysite.local/info.php

• Вы должны увидеть специальную страницу с логотипом PHP

 Установка и настройка веб-сервера  Создание виртуального

Установка и настройка веб-сервера

Создание виртуального хоста

Создание файла .htaccess

Проверка работы

Просмотр информации

Игорь Борисов http://igor-borisov.ru
Игорь Борисов
http://igor-borisov.ru
 Синтаксис  Операторы  Переменные  Константы  Типы 

Синтаксис

Операторы

Переменные

Константы

Типы

Управляющие конструкции

 Так PHP обрабатывает файл <p>Это будет

Так PHP обрабатывает файл

<p>Это будет проигнорировано.</p> <?php echo 'А это будет обработано.'; ?> <p>Это тоже будет проигнорировано.</p>

 Два всегда доступных набора тэгов  Рекомендуемый <?php ?> 

Два всегда доступных набора тэгов

Рекомендуемый <?php ?>

И <script language="php"> </script>

<?php echo 'если вы хотите работать с документами XHTML или XML, делайте так'; ?>

<script language="php"> echo 'некоторые редакторы (например, FrontPage) не любят инструкции обработки'; </script>

 Два других набора тэгов  Короткие теги (доступны с

Два других набора тэгов

Короткие теги (доступны с директивой short_open_tag в php.ini)

Всегда доступен с PHP 5.4

Теги в стиле ASP (доступны с директивой asp_tags в php.ini)

<? echo 'это простейшая инструкция обработки'; ?> <% echo 'Вы можете по выбору использовать теги в стиле ASP'; %>

 PHP поддерживает комментарии в стиле 'C', 'C++' и оболочки

PHP поддерживает комментарии в стиле 'C', 'C++' и оболочки Unix (стиль Perl)

echo "Это тест"; // Это однострочный комментарий в стиле c++ /* Это многострочный комментарий еще одна строка комментария */ echo "Это еще один тест"; echo "Последний тест"; # Это тоже однострочный комментарий

/*

echo "Это тест"; /* Этот комментарий вызовет проблему */

*/

 <?php какая-то инструкция ; ?>  <?php инструкция 1 ;

<?php какая-то инструкция;?>

<?php инструкция 1; инструкция 2;?>

<?php

какая-то

инструкция

в

несколько

строк;

?>

 echo "Привет мир!" ;  print( "Привет мир!" );  print "print

echo "Привет мир!";

print("Привет мир!");

print "print можно использовать и без скобок.";

echo 'Эта ', 'строка ', 'была ', 'создана ', 'с несколькими параметрами.';

echo strftime('%d-%B-%Y, %A');

Лабораторная работа 2.1

Вывод данных

Упражнение 1: Вывод текущей даты

• Откройте в текстовом редакторе файл index.php

• В области основного контента перед строкой <h3>Зачем мы ходим в школу?</h3> напишите следующий текст:

<blockquote> <?php echo strftime('Сегодня %d-%m-%Y');

?>

</blockquote>

• Сохраните файл index.php

• Запустите браузер и в адресной строке наберите: http://mysite.local/

• Убедитесь, что нет ошибок и результат выводится на страницу

 Переменные в PHP начинаются со знака доллара ( $ )  Имя

Переменные в PHP начинаются со знака доллара ($)

Имя переменной должно начинаться с буквы или символа подчеркивания

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

Имя переменной чувствительно к регистру

 Присвоить переменной $x значение 10  $x = 10 ;  Теперь

Присвоить переменной $x значение 10

$x = 10;

Теперь прибавим к значению переменной $x значение 15

$x = $x + 15; // $x теперь равно 25

Выведем значение переменной $x

print $x;

Удалим переменную $x

unset($x);

 $name = "Вася" ;  <h1>Привет <?php echo $name?> </h1> 

$name = "Вася";

<h1>Привет <?php echo $name?></h1>

<h1>Привет <?= $name?></h1>

Этот сокращенный синтаксис допустим только когда включена директива конфигурации short_open_tag

Работает всегда с PHP 5.4

Лабораторная работа 2.2

Использование переменных

Упражнение 1: Вывод текущей даты используя переменные

• Откройте в текстовом редакторе файл index.php

• В самом начале файла введите следующий текст:

<?php // Установка локали и выбор значений даты setlocale(LC_ALL, "russian"); $day = strftime('%d'); $mon = strftime('%B'); $year = strftime('%Y');

?>

• Внутри тэгов <blockquote></blockquote> вместо текста:

echo strftime('Сегодня %d-%m-%Y'); введите слдующий текст:

echo 'Сегодня ', $day, ' число, ', $mon, ' месяц, ', $year, ' год.';

• Сохраните файл index.php и посмотрите результат в браузере

• Внизу файла в блоке <!-- Нижняя часть страницы --> вместо 2012 напишите:

<?= strftime('%Y')?>

• Сохраните файл index.php

• Посмотрите результат в браузере

 Директивы php.ini  display_errors = On  error_reporting = E_ALL & ~E_NOTICE  ini_set

Директивы php.ini

display_errors = On

error_reporting = E_ALL & ~E_NOTICE

ini_set('display_errors', 1);

Основные уровни ошибок

E_PARSE

E_ERROR

E_WARNING

E_NOTICE

 Включаем вывод всех ошибок  error_reporting ( E_ALL );  Отключаем

Включаем вывод всех ошибок

error_reporting(E_ALL);

Отключаем вывод ошибок

error_reporting(0);

Включаем определенные уровни ошибок

error_reporting(E_ERROR | E_WARNING);

error_reporting(E_ALL & ~E_DEPRECATED);

 $x = 10 ;  Создаем копию переменной $x  $y = $x ;

$x = 10;

Создаем копию переменной $x

$y = $x;

$y = 20;

echo $x; // 10 echo $y; // 20

 $x = 10 ;  Создаем ссылку на переменную $x  $y =& $x

$x = 10; Создаем ссылку на переменную $x

$y =& $x;

$y = 20;

echo $x; // 20 echo $y; // 20

 $a = 'hello' ;  $ $a = 'world' ; // hello world 

$a = 'hello';

$$a = 'world'; // hello world

echo $a, ' ' , $hello;

$a = 'name';

$$a = 'Вася'; // Вас зовут: Вася

echo 'Вас зовут: ', $name;

 PHP – язык с динамической типизацией (loosely typed)  PHP

PHP – язык с динамической типизацией (loosely typed)

PHP поддерживает восемь простых типов

Четыре скалярных типа:

boolean

integer

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

string

Два смешанных типа:

array

object

Два специальных типа:

resource

NULL

 Это простейший тип  Выражает истинность значения: TRUE или

Это простейший тип

Выражает истинность значения: TRUE или FALSE

Ключевые слова TRUE

и FALSE регистро-

независимы

Присвоить $foo значение TRUE

$foo = True;

 Integer  $i = 1234 ; // десятичное число  $i = - 123

Integer

$i = 1234; // десятичное число

$i = -123; // отрицательное число

$i = 0123; // 83 в восьмеричной системе

$i = 0x1A; // 26 в шестнадцатеричной системе

$i = 0b101; // 5 в двоичной системе (PHP 5.4)

Float

$f = 1.234;

$f = 1.2e3;

$f = 7E-10; // 0.0000000007

// 1200

 Если строка указывается в двойных кавычках, переменные внутри

Если строка указывается в двойных кавычках, переменные внутри нее обрабатываются

$juice = "apple";

Выводит: He drank some apple juice

echo "He drank some $juice juice.";

Выводит: Здесь будет перевод на новую строку

echo "Здесь будет перевод на \n новую строку.";

Выводит: Экранируем "внутри" двойных кавычек

echo "Экранируем \"внутри\" двойных кавычек.";

 Если строка заключена в двойные кавычки, PHP распознает

Если строка заключена в двойные кавычки, PHP распознает управляющие последовательности для специальных символов:

\n

\r

\t

\\

\$

\"

новая строка (LF или 0x0A (10) в ASCII)

возврат каретки (CR или 0x0D (13) в ASCII)

горизонтальная табуляция (HT или 0x09 (9) в ASCII)

обратная косая черта

знак доллара

двойная кавычка

 В отличие от синтаксиса двойных кавычек, переменные и

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

$juice = "apple";

Выводит: He drank some $juice juice

echo 'He drank some $juice juice.';

Выводит: Здесь будет перевод на \n новую строку

echo 'Здесь будет перевод на \n новую строку.';

Выводит: Экранируем 'внутри' одинарных кавычек

echo 'Экранируем \'внутри\' одинарных кавычек.';

Лабораторная работа 2.3

Использование двойных кавычек

Упражнение 1: Вывод текущей даты используя подстановку значений переменных в двойных кавычках

• Откройте в текстовом редакторе файл index.php

• Переделайте строку:

echo 'Сегодня ', $day, ' число, ', $mon, ' месяц, ', $year, ' год.'; в строку:

echo "Сегодня $day число, $mon месяц, $year год.";

• Сохраните файл index.php

• Посмотрите результат в браузере

 echo <<<LABEL Меня зовут " $name ". Переводим на новую строку.

echo <<<LABEL Меня зовут "$name". Переводим на новую строку. Перед строкой стоит символ табуляции. Это должно вывести заглавную букву 'A': \x41 LABEL;

Идентификатор должен содержать только буквенно-цифровые символы и знак подчеркивания, и не должен начинаться с цифры (знак подчеркивания разрешается)

После оператора <<< необходимо указать идентификатор, затем только перевод строки

Закрывающий идентификатор должен стоять в первом столбце строки

Строка с закрывающим идентификатором не должна содержать других символов, за исключением, возможно, точки с запятой (;)

 echo <<<"LABEL" Меня зовут " $name ". Переводим на новую

echo <<<"LABEL" Меня зовут "$name". Переводим на новую строку. Перед строкой стоит символ табуляции. Это должно вывести заглавную букву 'A': \x41 LABEL;

echo <<<'LABEL' Меня зовут "$name". Переводим на новую строку. Перед строкой стоит символ табуляции. Это должно вывести заглавную букву 'A': \x41 LABEL;

 Специальное значение NULL представляет собой переменную без

Специальное значение NULL представляет собой переменную без значения

NULL - это единственно возможное значение типа NULL

Переменная считается null, если:

ей была присвоена константа NULL

ей еще не было присвоено никакого значения

она была удалена с помощью unset()

$var = NULL;

 $juice = "apple" ;  Каков результат следующего кода?  echo "He

$juice = "apple";

Каков результат следующего кода?

echo "He drank some $juice juice.";

echo "He drank some juice made of $juices.";

Решение проблемы

echo "He drank some juice made of {$juice}s.";

echo "He drank some juice made of ${juice}s.";

 Символы в строках можно использовать и модифицировать,

Символы в строках можно использовать и модифицировать, определив их смещение относительно начала строки, начиная с нуля

$str = 'This is a test.';

Получение первого символа строки

$first = $str{0};

Получение третьего символа строки

$third = $str{2};

Получение последнего символа строки

$last = $str{strlen($str)-1};

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

$str{strlen($str)-1} = '!';

Пример Название Результат - $a $a + $b $a - $b Отрицание Смена

Пример

Название

Результат

-$a $a + $b $a - $b

Отрицание

Смена знака $a

Сложение

Сумма $a и $b

Вычитание

Разность $a и $b

$a * $b

Умножение

Произведение $a и $b

$a / $b

Деление

Частное от деления $a на $b

$a % $b

Деление по модулю

Целочисленный остаток от деления $a на $b

 Оператор конкатенации ('.') возвращает объединение левого и

Оператор конкатенации ('.') возвращает объединение левого и правого аргумента

$a = "Hello ";

$b = $a . "World!";

// $b теперь содержит строку "Hello World!"

$a = "Hello"; $b = "World!"; "

$c = $a

// $c теперь содержит строку "Hello World!"

" . $b;

.

$c = "$a $b"; // $c тоже "Hello World!"

 В дополнение к базовому оператору присваивания имеются

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

$a = 3; $a += 5; // устанавливает $a в 8, как если бы мы написали: $a = $a + 5;

$b = "Hello "; $b .= "World!"; // устанавливает $b в "Hello World!", как и $b = $b . "World!";

  2 10 128 64 32 16   8 4 2 1   0 0
 

2

10

128

64

32

16

 

8

4

2

1

 

0

0

1

0

 

1

0

1

0

42

0

0

1

0

 

0

1

1

1

39

0

1

1

0

 

0

1

0

1

101

1

0

0

0

 

0

0

0

0

128

1

0

1

0

 

0

1

1

0

166

1

1

1

1

 

1

1

1

1

255

  Пример Название Результат $a & $b И Устанавливаются
 

Пример

Название

Результат

$a & $b

И

Устанавливаются только те биты, которые установлены и в $a, и в $b. Устанавливаются те биты, которые установлены в $a или в $b.

$a | $b

Или

$a ^ $b

Исключающее

Устанавливаются только те биты, которые установлены либо только в $a, либо только в $b, но не в обоих одновременно.

или

~

$a

Отрицание

Устанавливаются те биты, которые не установлены в $a , и наоборот.

$a << $b

Сдвиг влево

Все биты переменной $a сдвигаются на $b позиций влево (каждая позиция подразумевает "умножение на

 

2")

$a >> $b

Сдвиг вправо

Все биты переменной $a сдвигаются на $b позиций вправо (каждая позиция подразумевает "деление на 2")

 $result = 1 & 5 ; // $result = 1  $result = 1

$result = 1 & 5; // $result = 1

$result = 1 | 5; // $result = 5

$result = 1 ^ 5; // $result = 4

Побитовый сдвиг в PHP - это арифметическая операция

Биты, сдвинутые за границы числа, отбрасываются

Сдвиг влево дополняет число нулями справа, сдвигая в то же время знаковый бит числа влево, что означает что знак операнда не сохраняется

Сдвиг вправо сохраняет копию сдвинутого знакового бита слева, что означает что знак операнда сохраняется $result = 4 >> 1; // $result = 2 $result = 4 << 1; // $result = 8

 Оператор управления ошибками  Знак ( @ ). В случае, если он

Оператор управления ошибками

Знак (@). В случае, если он предшествует какому-либо выражению в PHP-коде, любые сообщения об ошибках, генерируемые этим выражением, будут проигнорированы

echo @unknown_function();

Не надо использовать этот оператор

Оператор исполнения

Обратные кавычки (``). PHP попытается выполнить строку, заключенную в обратные кавычки, как консольную команду, и вернет полученный вывод

$output = `ping 127.0.0.1`; echo "<pre>$output</pre>";

Подумайте, так ли необходим этот оператор?

 Array (Массив)  Массив в PHP - это упорядоченное отображение,

Array (Массив)

Массив в PHP - это упорядоченное отображение, которое устанавливает соответствие между значением и ключом

Рассматривается далее в теме, посвященной массивам

Resource (Ресурс)

Это специальная переменная, содержащая ссылку на внешний ресурс

Ресурсы создаются и используются специальными функциями

Рассматривается в темах, посвященных работе с файлами, директориями и базами данных

Object (Объект)

Сущность, обладающая определённым состоянием и поведением

Рассматривается в теме, посвященной объектно- ориентированному программированию

 echo gettype ( $value );  Возвращает тип переменной  Возможными

echo gettype($value);

Возвращает тип переменной

Возможными значениями возвращаемой строки являются:

"boolean""integer"

"double" (по историческим причинам "double" возвращается в случае типа float, а не просто "float")

"string"

"array"

"object"

"resource"

"NULL"

 $foo = "5bar" ; // строка settype ( $foo , "integer" ); // $foo

$foo = "5bar"; // строка settype($foo, "integer"); // $foo теперь 5 (целое)

Допустимыми значениями типа являются:

"boolean" (или "bool")

"integer" (или "int")

"float" (или "double")

"string"

"array"

"object"

"null"

 $foo = 10 ; // $foo это целое число // $bar это булев тип

$foo = 10;

// $foo это целое число

// $bar это булев тип

$bar = (boolean) $foo;

Допускаются следующие приведения типов:

(int), (integer) - приведение к integer

(bool), (boolean) - приведение к boolean

(float), (double), (real) - приведение к float

(string) - приведение к string

(array) - приведение к array

(object) - приведение к object

(unset) - приведение к NULL (PHP 5)

 Константы можно определить с помощью функции define(), а не

Константы можно определить с помощью функции define(), а не присваиванием значения

define("CONSTANT", "Здравствуй, мир.");

const CONSTANT = "Здравствуй, мир."; // PHP 5.3

У констант нет приставки в виде знака доллара ($)

echo CONSTANT; // выводит "Здравствуй, мир."

Константы могут быть определены и доступны в любом месте без учета области видимости

Константы не могут быть определены или аннулированы после первоначального объявления

Константы могут иметь только скалярные значения

Объявляем константу регистро-независимой

define("CONSTANT", "Здравствуй, мир.", true);

Лабораторная работа 2.4

Использование констант

Упражнение 1: Вывод строки используя значение константы

• Откройте в текстовом редакторе файл index.php

• В самом начале файла в php-блоке напишите:

// Объявление константы define('COPYRIGHT', 'Супер Мега Веб-мастер');

• Внизу файла в блоке <!-- Нижняя часть страницы --> вместо Супер Мега Веб-мастер напишите:

<?php echo COPYRIGHT?>

• Сохраните файл index.php

• Посмотрите результат в браузере

Надо зайти в магазин TRUE Магазин Иду в магазин открыт? FALSE Иду

Надо зайти в магазин

TRUE Магазин Иду в магазин открыт? FALSE
TRUE
Магазин
Иду в магазин
открыт?
FALSE

Иду домой

 Структура if реализована в PHP по аналогии с языком C:  if

Структура if реализована в PHP по аналогии с языком C:

if (условие) инструкция

if ($shop) echo "Иду в магазин";

if ($shop) { echo "Иду в магазин"; echo "Покупаю хлеб";

}

if (defined("CONSTANT")) echo CONSTANT;

 При преобразовании в boolean, следующие значения рассматриваются

При преобразовании в boolean, следующие значения рассматриваются как FALSE:

само значение boolean FALSE

integer 0 (ноль)

float 0.0 (ноль)

пустая строка и строка "0"

массив без элементов

особый тип NULL

Все остальные значения рассматриваются как TRUE

 if (isset( $var ))  Устанавливает, определена ли переменная 

if (isset($var))

Устанавливает, определена ли переменная

Возвращает TRUE, если переменная определена; FALSE в противном случае

if (empty($var))

Определяет, считается ли переменная пустой

Возвращает FALSE, если переменная является непустой и ненулевым значением

Выражение gettype() empty() isset() boolean : if($x) $x = "" ; $x = null ;

Выражение

gettype()

empty()

isset()

boolean : if($x)

$x = ""; $x = null;

string

TRUE

TRUE

FALSE

NULL

TRUE

FALSE

FALSE

$x неопределена

NULL

TRUE

FALSE

FALSE

$x = array(); $x = false; $x = true; $x = 1; $x = 42; $x = 0; $x = -1; $x = "1"; $x = "0"; $x = "-1"; $x = "php"; $x = "true"; $x = "false";

array

TRUE

TRUE

FALSE

boolean

TRUE

TRUE

FALSE

boolean

FALSE

TRUE

TRUE

integer

FALSE

TRUE

TRUE

integer

FALSE

TRUE

TRUE

integer

TRUE

TRUE

FALSE

integer

FALSE

TRUE

TRUE

string

FALSE

TRUE

TRUE

string

TRUE

TRUE

FALSE

string

FALSE

TRUE

TRUE

string

FALSE

TRUE

TRUE

string

FALSE

TRUE

TRUE

string

FALSE

TRUE

TRUE

Пример Название Результат $ a = = $ b Р а в н о TRUE

Пример

Название

Результат

$a == $b

Равно

TRUE если $a равно $b после преобразования типов.

$a === $b Тождественно равно

TRUE если $a равно $b и имеет тот же тип.

$a != $b

Не равно

TRUE если $a не равно $b после преобразования типов.

$a !== $b Тождественно не равно

TRUE если $a не равно $b или в случае, если они разных типов

$a < $b

Меньше

TRUE если $a строго меньше $b.

$a > $b

Больше

TRUE если $a строго больше $b.

$a <= $b

Меньше или равно

TRUE если $a is меньше или равно $b.

$a >= $b

Больше или равно

TRUE если $a больше или равно $b.

Тип операнда 1 Тип операнда 2 Результат null или string string NULL

Тип операнда 1

Тип операнда 2

Результат

null или string

string

NULL преобразуется в "", числовое или лексическое сравнение Преобразуется в bool, FALSE < TRUE Строки и ресурсы переводятся в числа, обычная математика Массивы с меньшим числом элементов считаются меньше, если ключ из первого операнда не найден во втором операнде - массивы не могут сравниваться, иначе идет сравнение соответствующих значений array всегда больше object всегда больше

bool или null string, resource или number

что угодно string, resource или number

array

array

array

object

что угодно что угодно

Пример Название Результат $a and $b И TRUE если и $a , и $b TRUE

Пример

Название

Результат

$a and $b

И

TRUE если и $a, и $b TRUE.

$a or $b

Или

TRUE если или $a, или $b TRUE.

$a xor $b Исключающее или TRUE если $a, или $b TRUE, но не оба.

!$a

Отрицание

TRUE если $a не TRUE.

$a && $b

И

TRUE если и $a, и $b TRUE.

$a || $b

Или

TRUE если или $a, или $b TRUE.

Надо зайти в магазин FALSE TRUE Магазин открыт? Иду в киоск Иду в

Надо зайти в магазин

FALSE TRUE Магазин открыт? Иду в киоск Иду в магазин Иду домой
FALSE
TRUE
Магазин
открыт?
Иду в киоск
Иду в магазин
Иду домой
 if ( $shop == "open" ) echo "Иду в магазин" ; else echo "Иду

if ($shop == "open") echo "Иду в магазин"; else

echo "Иду в киоск";

if ($shop and $money) { echo "Иду в магазин"; echo "Покупаю хлеб"; } else { echo "Иду домой"; echo "Туплю в телевизор";

}

 if ( $shop ) echo "Иду в магазин" ; else echo "Иду в киоск"

if ($shop) echo "Иду в магазин"; else echo "Иду в киоск";

echo ($shop) ? "Иду в магазин" : "Иду в киоск";

Рекомендуется избегать "нагромождения" тернарных выражений.

Поведение PHP неочевидно при использовании нескольких тернарных операторов в одном выражении:

echo (true?'true':false?'t':'f'); // 't'

Надо зайти в магазин Магазин открыт? FALSE Ближний киоск открыт?

Надо зайти в магазин

Магазин открыт? FALSE Ближний киоск открыт?
Магазин
открыт?
FALSE
Ближний
киоск
открыт?

FALSE

Иду в дальний киоск

TRUE Иду в магазин TRUE Иду в ближний киоск Иду домой
TRUE
Иду в магазин
TRUE
Иду в ближний киоск
Иду домой
 if ( $a > $b ) { echo "a больше, чем b" ; }

if ($a > $b) { echo "a больше, чем b";

}

elseif ($a == $b) { echo "a равно b";

}

else { echo "a меньше, чем b";

}

Лабораторная работа 2.5

Использование управляющей конструкции if - elseif - else

Упражнение 1: Вывод приветствия в зависимости от времени суток

• Откройте в текстовом редакторе файл index.php

• В начале файла в php-блоке напишите:

/*

*

Получаем текущий час в виде строки от 00 до 23

*

и приводим строку к целому числу от 0 до 23

*/ $hour = (int)strftime('%H'); $welcome = '';// Инициализируем переменную для приветствия

• Используя управляющую конструкцию if – elseif - else присвойте переменной $welcome значение, изходя из следующих условий если число в переменной $hour попадает в диапазон:

◦ от 0 до 6 - Доброй ночи

◦ от 6 (включительно) до 12 - Доброе утро

◦ от 12 (включительно) до 18 - Добрый день

◦ от 18 (включительно) до 23 - Добрый вечер

• Если число в переменной $hour не попадает ни в один из вышеперечисленных диапазонов, то присвойте переменной $welcome значение Доброй ночи

• Между тэгами <h1></h1> вместо строки Добро пожаловать на наш сайт! напишите:

<?php echo $welcome?>, Гость!

• Сохраните файл index.php

• Посмотрите результат в браузере

 $day = 2 ;  if ( $day == 1 ) echo "Понедельник" ;

$day = 2;

if ($day == 1) echo "Понедельник"; elseif ($day == 2) echo "Вторник"; elseif ($day == 3) echo "Среда"; elseif ($day == 4) echo "Четверг"; elseif ($day == 5) echo "Пятница"; elseif ($day == 6) echo "Суббота"; elseif ($day == 7) echo "Воскресенье"; else

echo "Неизвестный день";

$x TRUE case a Инструкция a break FALSE TRUE case b Инструкция b break FALSE
$x TRUE case a Инструкция a break FALSE TRUE case b Инструкция b break FALSE
$x
TRUE
case a
Инструкция a
break
FALSE
TRUE
case b
Инструкция b
break
FALSE
TRUE
case z
Инструкция z
break
FALSE
default
Инструкция
code
 $i = 1 ;  switch ( $i ) { case 0 : echo

$i = 1;

switch ($i) { case 0:

echo "Результат: 0"; case 1:

echo "Результат: 1"; case 2:

echo "Результат: 2";

}

 $i = 1 ;  switch ( $i ) { case 0 : echo

$i = 1;

switch ($i) { case 0:

echo "Результат: 0"; break; case 1:

echo "Результат: 1"; break; case 2:

echo "Результат: 2"; break; default:

echo "Результат: Много";

}

Лабораторная работа 2.6

Использование управляющей конструкции switch

Упражнение 1: Вывод значения директивы PHP post_max_size

Задача: вывести значение директивы php.ini post_max_size в байтах

• Откройте в текстовом редакторе файл contact.php

• В самом начале блока <!-- Область основного контента --> напишите:

<?php

?>

• Задайте два вопроса, необходимые для решения задачи

• Создайте переменную $size, которая будет содержать текущее значение директивы post_max_size

• Получите данные, о величине в которой представленно значение (т.е. килобайты, мегабайты )

• Используя управляющую конструкцию switch вычислите результат и сохраните его в переменную $size

• После закрывающего тэга веб-формы </form> напишите:

<p>Максимальный размер отправляемых данных <?= $size?> байт.</p>

• Сохраните файл contact.php

• Посмотрите результат в браузере

 Создание пустого массива  $arr = array();  Создание массива с

Создание пустого массива

$arr = array();

Создание массива с элементами

$arr = array("John","root","1234");

Обращение к элементу массива

echo $arr[1]; // root

Добавление элементов массива

$arr[] = 25;

$arr[] = true;

 count  Считает количество элементов массива или количество

count

Считает количество элементов массива или количество свойств объекта

$result = count($array);

print_r

Выводит удобочитаемую информацию о переменной

<pre><?php print_r($array);?></pre>

var_dump

Выводит информацию о переменной

<pre><?php var_dump($array);?></pre>

 Если массив еще не существует, он будет создан  $arr [] = 1 ;

Если массив еще не существует, он будет создан

$arr[] = 1; // Это создает массив с одним элементом с ключом 0

$arr[5] = 2; // Это добавляет к массиву второй элемент с ключом 5

$arr[] = 3; // Это добавляет к массиву третий элемент с ключом 6

$arr = array(12 => 1, 5 => 2); //

Это создает массив с

двумя элементами с индексами 5 и 12

$arr[] = 3; // Это добавляет к массиву третий элемент с ключом 13

Удаление элемента массива

unset($arr[12]); // Удаление элемента с ключом 12

 Ключ может быть либо integer, либо string  $arr = array( "name" =>

Ключ может быть либо integer, либо string

$arr = array( "name" => "John", "login" => "root", "pass" => "1234", "age" => 25, true);

Обращение к элементам массива

echo $arr["name"]; // John

echo $arr[0];

// 1

Лабораторная работа 2.7

Использование массива

Упражнение 1: Создание динамического меню

• Откройте в текстовом редакторе файл index.php

• В начале блока <!-- Меню --> напишите:

<?php $leftMenu = array( 'home'=>'index.php', 'about'=>'about.php', 'contacts'=>'contact.php', 'table'=>'table.php', 'calc'=>'calc.php' );

?>

• В значениях атрибута href тэгов <a> вместо текущих значений выведите значения элементов массива $leftMenu по следующему образцу:

<li><a href='<?= $leftMenu['home']?>'>Домой</a></li>

• Сохраните файл index.php

• Посмотрите результат в браузере

 Значение может быть любого имеющегося в PHP типа  $arr [ 0 ] =

Значение может быть любого имеющегося в PHP типа

$arr[0] = array( "login" => "vasya", "pass" => "1234");

$arr[1] = array( "login" => "petya", "pass" => "5678");

echo $arr[1]["login"]; // petya

Лабораторная работа 2.8

Использование многомерного массива

Упражнение 1: Создание гибкого динамического меню

• Откройте в текстовом редакторе файл index.php

• В блоке <!-- Меню --> удалите массив $leftMenu

• Вместо удаленного текста напишите:

<?php $leftMenu = array( array('link'=>'Домой', 'href'=>'index.php'), array('link'=>'О нас', 'href'=>'about.php'), array('link'=>'Контакты', 'href'=>'contact.php'), array('link'=>'Таблица умножения', 'href'=>'table.php'), array('link'=>'Калькулятор', 'href'=>'calc.php')

?>

);

• Измените отрисовку ссылок на:

<li><a href='<?= $leftMenu[0]['href']?>'><?= $leftMenu[0]['link']?></a></li> <li><a href='<?= $leftMenu[1]['href']?>'><?= $leftMenu[1]['link']?></a></li> <li><a href='<?= $leftMenu[2]['href']?>'><?= $leftMenu[2]['link']?></a></li> <li><a href='<?= $leftMenu[3]['href']?>'><?= $leftMenu[3]['link']?></a></li> <li><a href='<?= $leftMenu[4]['href']?>'><?= $leftMenu[4]['link']?></a></li>

• Сохраните файл index.php

• Посмотрите результат в браузере

 Начиная с версии PHP 5.4  $arr1 = [ "vasya" , "1234" ]; 

Начиная с версии PHP 5.4

$arr1 = ["vasya", "1234"];

$arr2 = [

"login" => "petya", "pass" => "5678"

];

 $array = array( 'первый' , 'второй' , 'третий' ,

$array = array('первый', 'второй', 'третий', 'четвертый');

По умолчанию внутренний указатель массива указывает на первый элемент

echo current($array); // вернёт "первый"

Передвигает внутренний указатель массива на одну позицию вперёд

next($array); // echo next($array) вернёт "второй"

echo current($array); // вернёт "второй"

Устанавливаем внутренний указатель массива на его последний элемент

end($array); // echo end($array) вернёт "четвертый"

Передвигаем внутренний указатель массива на одну позицию назад

prev($array); // echo prev($array) вернёт "третий"

Устанавливаем внутренний указатель массива на его первый элемент

reset($array); // echo reset($array) вернёт "первый"

Получаем ключ текущего элемента

echo key($array); // вернёт 0

 Синтаксис  Операторы  Переменные  Константы  Типы 

Синтаксис

Операторы

Переменные

Константы

Типы

Управляющие конструкции

Массивы

Игорь Борисов http://igor-borisov.ru
Игорь Борисов
http://igor-borisov.ru
 Операторы инкремента/декремента  Цикл for  Цикл while  Цикл

Операторы инкремента/декремента

Цикл for

Цикл while

Цикл do-while

Итерирование массива

Цикл foreach

 ++  Увеличивает значение переменной на единицу  -- 

++

Увеличивает значение переменной на единицу

--

Уменьшает значение переменной на единицу

PRE инкремент/декремент

++$a и --$a

Увеличивает или уменьшает $a на единицу и возвращает значение $a.

POST инкремент/декремент

$a++ и $a--

Возвращает значение $a, а затем увеличивает или уменьшает $a на единицу.

 Постфиксный инкремент  $a = 1 ;  echo "Должно быть 1: " .

Постфиксный инкремент

$a = 1;

echo "Должно быть 1: " . $a++;

echo "Должно быть 2: " . $a;

echo "Должно быть 1: $a"; $a += 1;

echo "Должно быть 1: $a" ; $a += 1 ;  Префиксный инкремент  $a =

Префиксный инкремент

$a = 1;

echo "Должно быть 2: " . ++$a;

echo "Должно быть 2: " . $a;

$a += 1; echo "Должно быть 2: $a";

 echo "Должно быть 2: " . $a ;  $a += 1 ; echo "Должно
 for ( Часть А ; Часть B ; Часть С ) { // Тело

for (Часть А; Часть B; Часть С) { // Тело цикла

}

for ($i = 1; $i <= 10; $i++) { echo $i;

}

Лабораторная работа 3.1

Использование цикла for

Упражнение 1: Вывод нечетных чисел из заданного диапазона

• Откройте проводник Windows

• Перейдите в папку С:\Users\Public\OpenServer\domains\mysite.local\demo\

• Создайте в текущей папке файл for.php

• Откройте созданный файл for.php в текстовом редакторе

• Используя цикл for выведите в столбик нечётные числа от 1 до 50

• Сохраните файл for.php

• Посмотрите результат в браузере

 while ( Условие ) { // Тело цикла }  $i = 1 ;

while (Условие) { // Тело цикла

}

$i = 1; while ($i <= 10) { echo $i++;

}

Лабораторная работа 3.2

Использование цикла while

Упражнение 1: Вывод строки посимвольно

• Откройте проводник Windows

• Перейдите в папку С:\Users\Public\OpenServer\domains\mysite.local\demo\

• Создайте в текущей папке файл while.php

• Откройте созданный файл while.php в текстовом редакторе

• Создайте переменную $var и присвойте ей строковое значение HELLO

• Используя цикл while выведите значение переменной $var в столбик так, чтобы на выходе в браузере получилось:

H

E

L

L

O

• Сохраните файл while.php

• Посмотрите результат в браузере

 $i = 100 ; do { echo $i ++; } while ( $i <=

$i = 100; do {

echo $i++; } while ($i <= 10);

 $i = 1 ; while ( $i <= 10 ) { echo $i ++;

$i = 1; while ($i <= 10) { echo $i++; if($i == 5) break;

/* Тут можно было написать 'break 1;'. */

}

Выведет: 1234

 $i = 0 ; while ( $i < 9 ) { $i ++; if(

$i = 0; while ($i < 9) { $i++; if($i == 5) continue; echo $i;

/* Тут можно было написать 'continue 1;'. */

}

Выведет: 12346789

Лабораторная работа 3.3

Создание динамической таблицы умножения

Упражнение 1: Создание HTML-таблицы

• В текстовом редакторе откройте файл table.php

• В начале файла создайте php-блоке, в котором создайте две целочисленные переменные $cols и $rows

• Присвойте созданным переменным произвольные значения в диапазоне от 1 до 10

• В блоке <!-- Таблица --> удалите весь html-код и напишите:

<?php

?>

• В текущем php-блоке используя циклы for отрисуйте таблицу умножения в виде HTML -таблицы на следующих условиях:

◦ Число столбцов должно быть равно значению переменной $cols

◦ Число строк должно быть равно значению переменной $rows

◦ Ячейки на пересечении столбцов и строк должны содержать значения, являющиеся произведением порядковых номеров столбца и строки

• Сохраните файл table.php

• Посмотрите результат в браузере

Упражнение 2: Приводим таблицу к товарному виду

• Отрисуйте значения в ячейках первой строки и первого столбца полужирным шрифтом и выровняйте их по центру ячейки

• Сделайте фоновый цвет ячеек первой строки и первого столбца отличным от фонового цвета таблицы

• Сохраните файл table.php

• Посмотрите результат в браузере

 foreach ( array as $value ) { // Тело цикла }  foreach (

foreach (array as $value) { // Тело цикла

}

foreach (array as // Тело цикла

}

$key => $value) {

 $arr = array( 'a' => 'one' , 'b' => 'two' , 'c' =>

$arr = array('a'=>'one','b'=>'two', 'c'=>'three');

foreach ($arr as $val) { echo "$val\n";

}