Найти тему
Компас

Php

1 Что такое PHP (пи-эйч-пи)

Прежде чем начать произносить умные определения, попробую объяснить Вам , что такое PHP, на примере из жизни.

Представьте что наш сайт — это дом. Красивый дом с бежевыми стенами, зелёной крышей, белыми окнами, шоколадными дверями.

И внутри красота. Прекрасные обои, плитка, сантехника, мебель, и даже посуда.

А вот чтобы вдохнуть в Ваш дом жизнь, чтоб в нём появились люди, стали общаться и что-то делать, да и чтоб другие люди смогли всё это увидеть нужен php.

У такой компьютерной жизни есть название — интерактивность, и создаётся она языком программирования PHP.

Ну а теперь более научное определение.

PHP — это язык программирования, специально разработанный для написания web-приложений (сценариев) и вот что о нём написано в Википедии:

«PHP (англ. PHP: Hypertext Preprocessor — «Инструменты для создания персональных веб-страниц»; произносится пи-эйч-пи) — скриптовый язык программирования общего назначения, интенсивно применяемый для разработки веб-приложений. В настоящее время является одним из лидеров среди языков программирования, применяющихся для создания сайтов».

На PHP написаны движки для сайтов, темы, плагины, различные формы связи (комментарии, почтовые программы) и много чего ещё.

Написано-то написано, но есть и некоторые нюансы которые нужно знать, прежде чем приступать к изучению этого языка.

PHP — это серверный язык. Как это понимать?

Существует два вида языков программирования — клиентский и серверный.

Клиентскими называются языки, которые обрабатываются непосредственно в браузере вашего компьютера. Это html, css и javascript.

Если документ, можно сказать даже программа написана с использованием только этих языков, то её можно сразу открыть в браузере. Т.е. написал код в редакторе (Notepad++), и можно сразу посмотреть что из этого получилось, т.е. открыть его в браузере.

С php несколько иначе.

Браузер на вашем компьютере его не читает. PHP отсылается на сервер, обрабатывается на нём и браузеру возвращается готовый результат на одном из клиентских языков.

И увидеть код php на мониторе невозможно. Допустим, если Вы щёлкните правой клавишей мыши и откроете Просмотр кода страницы, то код первых трёх языков Вы увидите, а вот php нет.

Вроде бы получается что для php нужно лишнее звено — лишняя работа. В чём смысл?

А смысл в том, что клиентские языки относительно статичны. HTML так вообще на 100% статичен. и если программа, допустим сайт, имеет множество страниц, то придётся прописывать полностью каждую, хотя на них всё кроме текста одинаковое, или почти одинаковое.

PHP позволяет создавать динамические сайты. Что это значит?

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

Код сайта сокращается в сотни раз. Пропорционально числу страниц.

Доля смысла есть и в конфедециальности и безопасности. Как я уже говорил, PHP невозможно прочитать в браузере кликнув по «Просмотреть код страницы».

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

Из всего вышесказанного следует, что для работы с php необходим сервер и его можно установить на Ваш комп, или использовать сервер хостинга, но об этом во второй части.

А пока немного наглядности. Вот так выглядит html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Документ без названия</title>
</head>
<body>
<h1>Привет мир!</h1>
<hr width="50%" color="решетка037FFC" >
<p>Здравствуйте уважаемые будущие веб мастера.
После долгих колебаний я всё-таки решил тоже
покопать на ниве обучения сайтостроению, хотя более перекопанной
нивы наверное трудно себе представить, так как о том,
как создать сайт на WordPress, в интернете описано уже несколько миллионов раз.
И всё-ж, и всё-ж.</p>
<hr width="50%" color="решетка 037FFC" >
</body>
</html>

Вот так CSS

решеткаheader{
height: 80px;
background-color: решетка25B33f;
margin-bottom: 10px;
}
решеткаsidebar{
background-color: решетка2FF553;
margin-bottom: 10px;
width: 180px;
padding: 10px;
float: right;
}

А вот так PHP.

<?php
$limit_login_my_error_shown = false; /* have we shown our stuff? */
$limit_login_just_lockedout = false; /* started this pageload??? */
$limit_login_nonempty_credentials = false; /* user and pwd nonempty */
global $limit_login_my_error_shown;
$limit_login_my_error_shown = true;
if (!empty($_COOKIE[LOGGED_IN_COOKIE])) {
$_COOKIE[LOGGED_IN_COOKIE] = '';
}
?>

Все эти три языка прекрасно интегрируются друг в друга и работают совместно, поэтому для веб-программирования желательно знать их все.

Причём изучение php, по моему, невозможно без знания основ html и css, так как он является как бы управляющим тем, что написано на этих двух языках.

То есть, html — основа, css — оформление, а php — управление.

2 Синтаксис PHP

Из чего состоит код PHP. Рассмотрим несколько основных и чаще всего встречающихся элементов, чтобы в дальнейшем не смотреть на набор символов и не гадать, что это такое, для чего нужно, и как работает.

А в следующем уроке уже начнём писать скрипты и смотреть что из этого получится.

Пример 1. Простой скрипт вывода на экран монитора.

<?php error_reporting(-1);
echo "Здравствуйте уважаемые начинающие веб-мастера";
echo (10 + 40) * 10 / 2;
?>

Первое что бросается в глаза — это:

<?php……….?> — открывающий и закрывающий теги, или маркеры PHP. Они всегда присутствуют в начале и конце кода.

PHP поддерживает несколько вариантов открывающих и закрывающих тегов.

<?php……..?> — полный (классический) вариант начального и конечного тегов, рекомендуется к постоянному использованию.

<?……..?> — сокращённый вариант, работает при включённой директиве short_open_tag (включена по умолчанию). Это встроенная в php директива, которая определяет разрешена ли короткая запись тегов php.

Однако лучше применять классический вариант, особенно при совместной работе с XML-кодом, во избежание неоднозначности в интерпретации.

<script language=»php»>……..</script> — расширенный вариант, доступен в любой момент без дополнительных настроек (встречается редко)

<?=……..?> — специальный вид для вывода простого выражения, является по сути сокращённым вариантом от , удобен при написании скрипта состоящего из одного выражения, работает при включённой директиве short_open_tag.

Любой php код всегда начинается и заканчивается этими тегами. Всё что находится внутри них, называется скрипт, или сценарий, или программа.

error_reporting(-1) — инструкция, включает показ всех предупреждений об ошибках, в написанном Вами, скрипте. Во время обучения желательно использовать постоянно.

echo — инструкция выводящая на экран монитора то, что в ней написано. Это может быть текст, числа, разметку html, то есть всего, что есть на веб странице.

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

Знаки

+ — сложение
— — вычитание
* — умножение
/ — деление
% — остаток при делении
— перед строкой — отрицание

называются арифметическими операторами php. Есть ещё много различных операторов. Это и строковые, и логические, и операторы присвоения, и ещё несколько видов операторов, но о всех них немного погодя.

Каждое выражение заканчивается точкой с запятой.

Пример 2. Переменные и константы.

<?php
error_reporting(-1);
$var = "sila";
$Var = "tok";
define ("I",1000,true);
echo "$var $vAr", I;
?>

$var и $vAr — переменные

Переменные — это хранилища информации. Вся информация, которую Вы заложите в программу, храниться в переменных. Начинаются они всегда знаком доллара, а название даёт программист, то есть Вы.

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

Начинается имя всегда с маленькой буквы. Количество переменных в скрипте не ограничено.

= — оператор присвоения

define (" I" ,1000,true); — константа

" I" — название константы
1000 — значение константы
true — учитывается регистр букв, если вместо него поставить false, то регистр учитываться не будет.

Константа, в php, всегда определяется функцией define(), и в ней хранятся данные, которые ни в коем случае не меняются во время работы программы. Название константы всегда пишется заглавными буквами.

Пример 3. Комментарии.

Считается хорошим тоном снабжать скрипты подробными комментариями.

<?php
echo "здравствуйте"; // Однострочный комментарий
/* Многострочный комментарий
еще одна строка комментария */
echo"Ещё раз здравствуйте";
echo "И ещё раз здравствуйте"; # Тоже однострочный комментарий
?>

После знаков // и # браузер игнорирует всё, что находится до конца строки.

Пример 4. Функция.

<?php
function arr_max($arr)
{
//содержание (тело) функции
}
?>

function — функция, обрабатывает определённое количество действий, направленных на получение конкретного результата.

arr_max — название функции
($arr) — аргументы (входящие данные) функции

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

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

Конструкции применяются для управления пошаговым исполнением кода.

<?php $flag1 = true;
$flag2 = true;
$flag3 = false;
if( $flag1 && $flag2 || $flag3)
{
echo "Условие истинно";
}
else
{
echo "Условие ложно";
}
?>

$flag1, $flag2, $flag3 — переменные
if и else — условные операторы, то есть проверяющие условие — ложь или истина.
&& — логический оператор, читается как соединительный союз «и».
|| — логический оператор, читается как разделительный союз «или»
echo — инструкция вывод на экран

Вот теперь мы будем знать хотя бы несколько основных названий, и назначений элементов скрипта. Вообще-то в php их ещё предостаточно, и в дальнейшем, как в теории так и на практике, мы их подробно рассмотрим.

3 Вывод данных на экран и комментарии в php

В этой статье мы попробуем написать наши первые скрипты и узнаем, как в PHP выводиться на экран текст, и как пишутся комментарии к программе.

Если Вы читаете этот курс с начала, а это рекомендуется, то Вы уже знаете, что для работы с php кодом потребуются два инструмента — локальный хостинг Денвер, нужный для обработки PHP кода, и редактор Notepad++, нужный для написания этого кода.

Так как в этом уроке мы начнём ими пользоваться, то тем кто их ещё не установил, необходимо это сделать, после чего можно будет продолжить.

Для того чтобы php код, написанный вами, обрабатывался Денвером, надо создать на нём директорию, в которую мы будем сохранять созданные файлы.

Звучит это возможно немного непонятно, но на самом деле всё очень просто.

Открываем новый документ в Notepad++ пишем в нём php код, обзываем этот документ как index.php и сохраняем в папку на Денвере.

Затем, чтоб открыть этот документ и посмотреть, запускаем Денвер, вводим поисковый запрос в браузер состоящий из названия этой папки и названия файла, например site/index.php.

Так как Денвер установлен на вашем же компьютере, то он первым отзовётся на этот запрос и выдаст браузеру результат кода написанного вами.

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

Вот теперь всё готово к практическим занятиям и можно приступать к созданию первого скрипта. Этот первый скрипт описан уже в сотнях уроков, и я не стану исключением, так как первый он и есть первый — вывод результата на экран.

Итак, в Notepad++, в новом пустом файле пишем следующий код.

<?php
echo "Здравствуйте уважаемые начинающие программисты";
?>

Сохраняем эту запись щёлкнув по третьей иконке (не забываем перед этим проверить кодировку, должна быть UTF-8(без ВОМ)).

При сохранении в окне поисковика внизу пишем название файла — index.php.

Теперь если открыть в браузере новую вкладку и набрать в адресной строке site.ru, то он должен открыть белую страницу с одной строчкой в левом верхнем углу.

Возможно браузер сразу не увидит новую директорию на Денвере, тогда нужно будет перезагрузить компьютер, снова запустить Денвер, и уж после этого набирать в поисковике site.ru.

Через меню «Запуск» в Notepad++, php файл не откроется.

Разберём этот скрипт по косточкам.

<?php — открывающий тег, сообщающий что далее последует код php.

echo — вообще-то конструкция языка, но так как такое определение некомфортно для восприятия, обычно инструкция или команда, выводящая на экран то, что в ней содержится.

"Здравствуйте уважаемые начинающие программисты"; — содержание выводимое на экран. Заключается в кавычки и завершается точкой с запятой всегда.

?> — закрывающий тег сообщающий о том, что php код закончился.

В кавычках может находится не только текст, но и любой html код вместе со стилями css, и на экран будет выведен готовый элемент, который этот код создаёт.

Давайте попробуем. Вставим в скрипт заголовок и абзац, и зададим им оформление css — заголовку красный цвет, а абзацу курсив.

<?php
echo "<h2>Приветствие</h2>
<p>Здравствуйте уважаемые начинающие программисты</p>
<style>
h2 {
color: red;
}
p {
font-style: italic;
}
</style>";
?>

Сохраняем и обновляем страницу site.ru. Результат:

Итак, мы вставили html в php и получили результат, убедившись что эти языки совместно работают. Кстати, точно так же можно вставить php в html. В любом месте кода.

У кого-то может возникнуть вопрос: А зачем заключать html код в php, если он и так будет прочтён браузером и элемент отобразится на экране?

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

Ну в общем понятно, да. HTML в скрипте, а уж скрипт выводит его там где надо по запросу. По этому принципу работают все динамические CMS. но об этом попозже.

Далее посмотрим как быть если в тексте кроме внешних кавычек присутствуют ещё и внутренние.

Допустим в выводимой строке есть слово заключённое в кавычки, или выводиться элемент кода, например class=»next».

В этом случае внутренние кавычки экранируются обратным слешем

<?php
echo "Зададим class=\"next\" для следующих элементов";
?>
-2

echo обладает ещё одной способностью — производить математические действия с числами .

<?php
echo (100-20)*5/2;
?>

Эта программа выведет на экран число 200.

Есть ещё одна команда вывода на экран — return. Она выполняет те же функции что и echo, а вот смысл её появления — великая тайна есть.

Многие пытались раскрыть эту тайну, и вроде даже удалось определить экспериментально, что echo работает на сотую долю секунды быстрее чем return, но это по слухам.

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

Следующий простейший и наиболее часто встречающийся элемент кода php (как и echo) — это комментарии.

Так как программа — это результат творчества программиста, то принято обильно снабжать её комментариями, чтоб можно было понять полёт творческой мысли разработчика.

В PHP применяются комментарии следующих видов:

// Одно-строчный комментарий — наиболее распространённый. После двойного слеша браузер игнорирует всё что находится до конца строки.

решеткаТоже одно-строчный комментарий — комментарий скриптовых языков UNIX

/*
Много-строчный комментарий
Много-строчный комментарий
Много-строчный комментарий
*/

Пример:

<?php
echo "Тест"; // Одно-строчный комментарий
/* Много-строчный комментарий
Много-строчный комментарий
Много-строчный комментарий */
echo "Тест"; решеткаЭто комментарий скриптовых языков Unix
?>

Комментарии действуют только внутри тегов <?php………?>. Если их вывести за эти ограничения, то браузер отобразит их как обычный текст.

4 Переменные в PHP

Переменная в php — это ячейка памяти для хранения данных.

Почти все данные с которыми работает программа находятся в переменных.

Каждая переменная имеет своё собственное имя которое ей даёт программист.

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

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

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

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

Если название переменой состоит из нескольких слов, то писать их надо слитно, без пробела, и каждое слово, кроме первого начинать с заглавной буквы. Первое слово лучше начинать с маленькой буквы. Можно разделить слова знаком подчёркивания.

Имена переменных чувствительны к регистру букв, что конечно упрощает их выбор, так как next и nExt уже будут два разных имени.

Давайте напишем скрипт с переменными, и выведем содержащиеся в них данные на экран.

<?php
$next = "Это данные в переменной";
$nExt = "Это данные в другой переменной";
echo "$next. $nExt";
?>

Браузер должен показать вот такую строку.

Разберём скрипт по составу.

<?php — начальный тег php.
$ — с этого знака
всегда начинается имя переменной.
nExt — имя переменной.
= — оператор присвоения.
"Это данные в другой переменной" — значение переменной.
echo — команда вывод на экран.
?> — конечный тег php

Первые две строки после начального тега — объявление переменной. Т.е. указывается имя переменной и вся информация которая в ней содержится.

Объявление переменной делается один раз в начале скрипта, после чего она может использоваться бесконечное число раз без указания содержимого.

И в подтверждении этого ещё один скрипт, в котором для вывода на экран используется только название переменной.

<?php
$scolco_let=5.5;
$marcaAvto="Лада";
$probegAvto=100;
echo "За $scolco_let лет $marcaAvto проехала $probegAvto тыс. км.";
?>

Как видите, для разделения числовых значений, в качестве разделителя в php применяется точка.

С переменными можно производить различные математические действия — увеличивать, уменьшать делить и умножать.

Делается это следующим образом: после имени переменной ставится нужный математический оператор, определяющий вид действия (+, -, *, /), затем оператор присвоения (=), и число, на которое нужно произвести действие.

<?php
$x=10;
$x+=10;
echo "$x";
?>

Эта программа выведет число 20.

PHP поддерживает восемь простых типов данных (переменных), но преимуществом этого языка является то, что он не требует ни описывать переменные явно, ни указывать их тип. Интерпретатор все это поймёт и сделает сам.

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

Если по простому, то тип переменной определяется её содержанием. Если в переменной число — это integer или double (числовые типы), если строка — строковой тип string и т.д.

На имя переменной её тип не влияет, т.е. по имени невозможно определить к какому типу переменная относится.

Для определения типа переменной, при необходимости, есть специальная функция, но об этом чуть ниже.

Основные типы переменных:

integer — Целые числа разрядность которых зависит от разрядности операционной системы компьютера.

Если она составляет 32 бита то число может принимать значение от -2 147 483 648 до 2 147 483 647, если разрядность 64 бита, то от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807.

double (float) — Число с плавающей точкой значение которого возможно от 1.7 х 10-308 до 1.7 х 10308 с любым знаком (+ или -).

string — Строковый тип. может хранить строки любого объёма.

boolean — логический тип принимающий лишь два значения: true (истина) и false (ложь).

array — Тип массивы — это объединение нескольких однотипных переменных.

object — Тип объект — объединение нескольких разнотипных переменных и методов их обработки.

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

NULL — Специальный тип, предупреждающий о том что переменная не была инициализирована.

Рассмотрим их в общих чертах по порядку. Хоть переменные php и не требуют строгого задания типа, при их объявлении, но общие понятия о них, думаю, иметь всё же необходимо.

Целые числа (integer).

Целые числа — это наиболее простой, а значит и наиболее быстродействующий тип данных. По умолчанию задаются они в десятичной системе исчисления. Однако php допускает задавать их в восьмеричной и шестнадцатеричной системах.

Что это значит? В восьмеричной системе основанием числа служит величина 8, так же как 10 в десятичной системе, а для всех чисел используются цифры от 0 до 7

В шестнадцатеричной, соответственно, величина 16, и цифры от 0 до 9. Кроме того в шестнадцатеричной системе для выражения числа применяются буквы английского алфавита A, B, C, D, E, F, обозначающие цифры, соответственно 10, 11, 12, 13, 14, 15.

В значениях переменных перед числом в восьмеричной системе ставиться префикс 0, а в шестнадцатеричной — 0х

Пример:

<?php
$next=123; //десятичное число
$next=0123; //восьмеричное число
$next=0x123; //шестнадцатеричное число
$next=0xABCDEF; //шестнадцатеричное число
?>

Число с плавающей точкой, вещественное число (double или float).

Эти числа имеют огромнейший интервал, за пределы которого, пока во всяком случае, программы никогда не выходят.

Существуют две формы записи числа с плавающей точкой — стандартная и научная, отличающаяся от стандартной записью чисел больше и меньше единицы. Мы, в основном, будем иметь дело со стандартной формой, но на всякий случай я покажу обе.

<?php
//Объявление вещественного числа в стандартной форме
$next=1.23456; //Положительное вещественное число
$next=-1.23456; //Отрицательное вещественное число
//Объявление вещественного числа в научной форме
$next=1.23456; //Положительное вещественное число
$next=1.23456e+2; //Положительное число больше единицы (123.456)
$next=1.23456e-2; //Положительное число меньше единицы (0.0123456)
?>

Как видите, в научной записи порядок указывается буквой «е» и числом определяющим его величину.

Строки (string)

Строки могут принимать любой, произвольный размер, и формируются путём заключения той или иной фразы в кавычки. В php используется 3 вида кавычек.

Это прямые двойные кавычки, прямые одиночные кавычки (апострофы), и прямые обратные кавычки (обратные апострофы).

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

<?php
echo 'Зададим class="next" для следующих элементов';
?>

Ещё один пример применения двойных кавычек мы уже видели в начале статьи. Посмотрим ещё раз более подробно.

<?php
$scolco_let=5.5;
$marcaAvto="Лада";
$probegAvto=100;
echo "За $scolco_let лет $marcaAvto проехала $probegAvto тыс. км.";
?>

Как видно, если разместить в кавычках имя переменной, то на экран выводится её значение.

Допускается так же обрамление двойных кавычек двойными же кавычками, но в таком случае внутренние кавычки экранируются обратным слешем.

<?php
echo "Зададим class=\"next\" для следующих элементов";
?>

Бывают случаи, когда при размещении переменной в строке необходимо точно указать её границы. Обычно тогда, когда значение переменной является частью слова. Для этого применяются фигурные скобки.

<?php
$next="Бензо";
echo "Работает {$next}-генератор."; //Работает Бензо-генератор.
echo "Засорился {$next}насос."; //Засорился Бензонасос.
?>

Логический тип (boolean)

Как уже говорилось выше, переменные этого типа могут принимать только два значения — TRUE (истина) и FALSE (ложь). Используются они для сравнения и управления циклами.

Более подробно их рассмотрим в статье посвящённой операторам php.

Массивы(array)

Массивы — это набор данных, состоящий из однотипных элементов.

<?php
$next[0]="Бульдог";
$next[1]="Питбуль";
$next[2]="Дог";
echo $next[0];
echo "<br>";
echo $next[1];
echo "<br>";
echo $next[2];
?>

Квадратные скобки указывают, что это элемент массива, а в них помещён индекс массива, через который можно обратиться к конкретной переменной.

Объект(object)

Объект по сути является большой переменной, которая содержит в себе данные и функции для их обработки. Создаётся он по специальному шаблону называемому классом. Данные и функции называются членами класса.

Структура объекта схожа с массивом, только для доступа к его отдельным элементам применяются не квадратные скобки, а оператор ->.

Инициализации объекта осуществляется выражением new, которое создаёт в переменной экземпляр объекта.

<?php
class foo
{
function do_foo()
{
echo "Doing foo.";
}
}
$bar = new foo;
$bar->do_foo();
?>

К объектам мы ещё вернёмся и будем изучать их более подробно.

NULL

Специальный тип NULL предназначен для того, чтоб отметить неинициализированную переменную. Такая переменная образуется, если в ней пропущен оператор присвоения =, или если она уничтожается конструкцией unset().

Определение типа переменной

Для определения типа переменной, в php поддерживается несколько типов функций. Это функции проверяющие принадлежность переменной к определённому типу данных (is_string(), is_integer(), is_bolead() и так далее).

Все они начинаются префиксом is_ после которого идёт название типа.

Универсальной функцией, позволяющей определить тип любой переменной, является функция gettype(). Получив в качестве аргумента переменную, она возвращает её тип.

<?php
//Объявляем переменную с целым числом
$next=123;
echo gettype($next); //выведет integer
//Объявляем переменную с вещественным числом
$next=1.23456;
echo gettype($next); //выведет double
//Объявляем переменную со строкой
$next='......';
echo gettype($next); //выведет string
?>

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

5 Константы в PHP

Константа в php, как и переменная, является ячейкой для хранения памяти. Константа — величина имеющая собственное имя, и не меняющаяся в процессе исполнения скрипта.

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

Определяется константа функцией define()

Пример:

<?php
define("PAROL",6548962);
echo PAROL;
?>

Эта программа выведет на экран число 6548962

Рассмотрим составляющие:

«PAROL» — имя константы. Предпочтительно — заглавными буквами. Нельзя начинать цифрой.
6548962 — постоянное значение константы

Если при работе с константой необходимо будет учитывать регистр букв, то в скобки вводится значение параметра $case_sen — true

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

<?php
define('SCHAPCA','/images/png.10');
echo SCHAPCA; // /images/png.10/
echo '<img src=""'.SCHAPCA.'pic.png">';
?>

Кроме констант определяемых разработчиком, существуют константы, выставляемые интерпретатором. Это, например, сообщения об ошибках, указатели путей к файлам, а так же огромное количество констант объявленных в различных расширениях.

Список всегда доступных предопределённых констант

__LINE__ — текущая строка в файле
__FILE__ — полный путь и имя текущего файла
__FUNCTION__ — имя функции
__CLASS__ — имя класса
__METHOD__ — имя метода класса

Что такое предопределённая константа, вернее как она используется, хорошо понятно из примера вывода на экран сообщений об ошибках.

<?php
echo "Имя файла".__FILE__."<br>";
echo "Строка".__LINE__.;
?>

Браузер выведет такое сообщение.

-3

Как видите, константы сами определили путь к файлу и номер строки в которых, возможно, появится ошибка. Наверное поэтому их ещё называют волшебным константами.

Для проверки существования константы, применяется функция dtfined(). Аргументом для неё всегда является имя константы. Если константа объявлена, то результатом проверки будет true (истина), если нет — false (ложь).

<?php
define("PAROL",6548962);
if (defined("PAROL"));
{
echo 'Константа PAROL установлена.';
}
else
{
echo 'Константа PAROL не определена!';
}
?>

На экран выведется одно из значений в зависимости от того, будет обнаружена константа, или нет.

В этом скрипте применён условный оператор выбора — If. Подробнее о нём поговорим в статье «Операторы php».

Помимо пользовательских и предопределённых констант, php поддерживает ещё один, очень редко применяемый и малоизвестный вид констант — динамические константы.

Как видно из прилагательного (динамические), и вопреки своему названию, константы всё таки могут меняться, и это ещё раз указывает на гибкость языка php.

Делается это при помощи функции rand(), которая генерирует случайное число от 1 до 10, в дальнейшем применяющееся для формирования константы.

Определяется значение такой константы только при помощи функции constant(). Эта же функция определяет и существование динамической константы, и если последняя не существует, то constant() выводит на экран предупреждение Warning.

<?php
//Генерируем случайное число от 1 до 10
$nomer = rand(1,10);
//Формируем имя константы
$name = "NEXT($nomer)";
//Определяем константу с динамическим именем
define($name,1);
//Получаем значение динамической константы
echo constant($name);
?>

Эта программа выведет на экран значение — единицу. Интересная штука в плане безопасности программы. В дальнейшем разберёмся с ней подробнее.

6 Операторы PHP

В этой статье мы узнаем, что такое операторы php. Вообще-то, с некоторыми из них мы знакомы чуть ли не с детства, только знаем их как знаки (+, -, =, !, ?).

В php все они называются операторами, что вполне логично, так как они выполняют определённое действие, или операцию.

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

Давайте начнём по порядку.

Арифметические операторы

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

+ — оператор сложения;
— — оператор вычитания;
/ — оператор деления;
* — оператор умножения;
% — оператор получения остатка при делении;
++ — оператор увеличения на единицу (инкремент);
— — — оператор уменьшения на единицу (декремент)

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

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

<?php
echo (6 + 7) * (7 + 8); // 195
?>

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

<?php
echo 8 / 3; //2.66666666666
?>

Количество знаков, выводимых для дробного числа, зависит от установленного значения в директиве precision, находящейся в файле php.ini. Обычно это 12 символов не считая точки.

Оператор % обычно применяется для определения, делиться ли одно число на другое без остатка или нет.

<?php
echo 53328 % 4; //0
?>

Действия с арифметическими операторами, за исключением инкремента и декремента, называются бинарными, так как в них участвуют два операнда (слагаемое + слагаемое, делимое / делитель, и т. п.)

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

Операторы инкремента (++) и декремента (- -) применяются только к переменным.

Тип переменной integer (целые числа)

<?php
$next = 3;
echo ++$next; // 4
?>

Тип переменной string (строка)

<?php
$next = "abc";
echo $next; // abd
?>

Буква «d» выводится вместо буквы «с» потому, что она следующая по алфавиту, а мы увеличили значение переменной на единицу.

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

Поразрядные операторы

Поразрядные операторы предназначены для работы с двоичными данными. Если кто-то не представляет что это такое — объясню. Двоичные числа — это числа типа 1001000011100000111000.

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

& — поразрядное соединение И (and);
~ — поразрядное отрицание (not);
| — поразрядное объединение ИЛИ (or);
^ — поразрядное исключение ИЛИ (xor);
<< — сдвиг влево битового значения операнда;
>> — сдвиг вправо битового значения операнда;

Встреча с этими операторами вполне вероятна, так как двоичные данные широко используются при разработке программ по компьютерной графике. Но для их изучения, если кому то потребуется, придётся пройти отдельный курс на другом ресурсе.

Операторы сравнения

Операторы сравнения относятся к логическим операторам, и применяются для сравнения переменных. Массивы и объекты с их помощью сравнивать нельзя.

> — оператор больше;
=> — оператор больше или равно;
< — оператор меньше;
<= — оператор меньше или равно;
== — оператор равенство;
!= — оператор неравенство;
=== — оператор эквивалентности (равны значение и тип переменной);
!== — оператор неэквивалентности;

В результате сравнения на экран выводится либо единица, что соответствует true (истина), либо пустая строка, что соответствует false (ложь).

<?php
echo 1 > 0; // 1
echo 1 < 0; // пустая строка
echo 1 => 0; // 1
echo 1 == 1; // 1
?>

Вот так, сами по себе, операторы сравнения почти не применяются. Основное их предназначение — это работа в паре с оператором if.

Условные операторы if, else, elseif.

Условные операторы называются так потому, что предназначены для проверки некоего условия, в зависимости от которого выполняется то, или иное действие.

В качестве аргумента, оператор if принимает логическую переменную, или выражение. Если условие верно то выводится результат, если не верно — пустая строка.

<?php
$next = "Влажность воздуха 80%";
$nexT = "Влажность воздуха 90%";
if ($next < $nexT)
{
echo "Возможны осадки"; // Выводиться Возможны осадки
}
?>
<?php
$next = "Влажность воздуха 80%";
$nexT = "Влажность воздуха 90%";
if ($next > $nexT)
{
echo "Возможны осадки"; // Выводиться пустая строка
}
?>

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

<?php
$next = "Влажность воздуха 80%";
$nexT = "Влажность воздуха 90%";
if ($next > $nexT)
{
echo "Возможны осадки";
}
else
{
echo "Осадки не предвидятся";
}
?>

В этом случае выведется «Осадки не предвидятся», а если в выражении сменить знак «Больше» на «Меньше», то выведется «Возможны осадки». Вот так условные операторы проверяют условие, и выводят согласно ему верный результат.

Очень часто возникает необходимость задать более двух условий, и тогда, для их последовательной проверки, применяется оператор elseif.

<?php
$next = "Влажность воздуха 50%";
$nexT = "Влажность воздуха 60%";
if ($next > $nexT)
{
echo "Ясно";
}
elseif($next <= $nexT)
{
echo "Снег";
}
elseif($next >= $nexT)
{
echo "Дождь";
}
elseif($next == $nexT)
{
echo "Засуха";
}
else
{
echo "Возможны осадки";
}
?>

Эта программа выведет «Снег». Если бы ни одно из условий не подошло, то вывелось бы «Возможны осадки».

Оператор if может содержать сколько угодно блоков elseif, и только один оператор else.

Допускается альтернативный вариант записи — без фигурных скобок. В таком случае строки операторов if, else, elseif, заканчиваются двоеточием, а вся конструкция — ключевым словом (оператором) endif.

<?php
$next = "Влажность воздуха 50%";
$nexT = "Влажность воздуха 60%";
if ($next <= $nexT):
echo "Снег";
elseif($next >= $nexT):
echo "Дождь";
elseif($next == $nexT):
echo "Засуха";
else:
echo "Возможны осадки";
endif;
?>

Логические операторы

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

Логические операторы используются в случаях, когда нужно объединить несколько условий, что позволят сократить число операторов if, что в свою очередь позволяет уменьшить вероятность ошибки в коде.

&& — соединительный союз И;
and — тоже И, но с меньшим приоритетом;
|| — разделительный союз ИЛИ;
or — тоже ИЛИ, но с меньшим приоритетом;
xor — исключающее один элемент ИЛИ;
! — отрицание;

Меньший приоритет означает, что при наличии обеих операторов, первым выполняется тот, у которого больший приоритет.

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

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

Оператор присваивания = присваивает левому операнду значение правого.

<?php
$next = "Здравствуйте"
echo "Здравствуйте" // Здравствуйте
?>

Оператор точка

Оператор точка отделяет целую часть числа от дробной, и объединяет несколько строк и число, в одну целую строку.

<?php
$next = 22;
echo "Сегодня после" .$next. "ожидается заморозок"; // Сегодня после 22 ожидается заморозок
?>

Оператор круглые скобки

Как и в математике, оператор круглые скобки задаёт приоритет действию, в них заключённому.

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

Оператор фигурные скобки

В php существует три способа, или даже стиля, размещения фигурных скобок.

1. BSD стиль — скобки выравниваются по левому краю.

if($next)
{
echo «Здравствуйте уважаемые начинающие программисты»;
}

2. GNU стиль — скобки выравниваются с отступом от левого края

if($next)
{
echo «Здравствуйте уважаемые начинающие программисты»;
}

3. K&R стиль — скобка открывается в строке оператора

if($next){
echo «Здравствуйте уважаемые начинающие программисты»;
}

С самого начала нужно выбрать один из стилей и в дальнейшем, при написании скриптов, использовать только его. Причём, совершенно не важно, какой стиль Вы предпочтёте. Важно чтоб на протяжении программы он был единообразным.

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

Достаточно иметь представления об основных базовых. А остальные будем разбирать на практических примерах.

7 Функции PHP

Здравствуйте уважаемые начинающие программисты. В этой статье разговор пойдёт о функциях PHP.

Функция PHP — это как бы программа внутри программы.

Если провести упрощённую аналогию, то её можно сравнить с поиском по сайту, при помощи которого можно обратиться к любой странице сайта.

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

Как это выглядит на практике (тоже пока упрощёно). Допустим у Вас имеется php код, состоящий из конструкций, массивов и других блоков. Все они последовательно выполняются, и программа таким образом работает.

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

И вот в этом случае, чтобы упростить код, и не повторять много раз один и тот же блок, можно объявить (создать) функцию, задать ей этот блок в параметрах, и затем вызывать её в нужных местах кода. Функция будет выполнять заданные ей действия, и программа опять же будет работать.

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

Можно так же, по аналогии с CSS, вывести все используемые в программе функции в отдельный файл. Такой файл называется «Библиотека». Например всем известная библиотека jQuery — это набор функций.

Ну а теперь давайте поподробнее. Функции в php делятся на стандартные и пользовательские. Стандартные — составляют функциональную основу php, и являются частью этого языка программирования.

Перечислить и описать их все здесь я не смогу, так как имя им легион (по последним данным насчитывается более 4 000 функций php, которые, в свою очередь, подразделяются на 36 категорий). Да это и не к чему.

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

Особенно полный и подробный справочник функций, по моему, представлен на ресурсе php.su.

В добавок к стандартным функциям, в php применяются ещё и пользовательские функции. Создаёт их пользователь, или программист, то есть Вы.

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

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

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

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

Как то уж так повелось, что в имени функции не используется тире и подчёркивание, хотя это совершенно не запрещено.

Если, для внесения смысла, имя функции состоит из двух или трёх слов, то пишутся они слитно, но каждое новое слово начинается с заглавной буквы.

Например:

function mainNevFunction

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

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

При объявлении функции, перед её именем необходимо поставить ключевое слово function, чтобы интерпретатор понял, с чем имеет дело.

Пример:

<?php
$category = "Читать далее ...";
function dalee($category){
echo "$category";
}
dalee($category); //Выводиться на экран "Читать далее ..."
?>

Разберём его подробно. У нас есть переменная $category, с некоторым объёмом памяти, а именно, со строкой «Читать далее».

Так как эту строку предполагается выводить много раз, то объявляем для неё функцию dalee.

В параметры этой функции (в круглых скобках) вводим переменную, а в теле функции (в фигурных скобках) указываем, что она должна выполнять. В нашем случае — это вывод на экран строки «Читать далее …».

Теперь у Вас отпала необходимость много раз переписывать блок с переменной и выводом, достаточно в нужных местах кода вставить dalee($category);

Как Вы уже поняли — это был пример пользовательской функции, так как имя мы ей дали сами. Но, как я уже говорил ранее, в php существует более 4000 стандартных функций, то есть уже объявленных по умолчанию.

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

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

Для того, чтобы провести проверку, в php есть, опять же, стандартная функция function_exists, а проверка выполняется при помощи условных операторов if и else.

<?php
if(function_exists("dalee")){
echo 'есть';
}
else {
echo 'нет';
}
?>

Эта программа определит есть ли в php стандартная функция с именем dalee, или нет, и выведет на экран соответствующий ответ.

Можно использовать функцию в качестве калькулятора. Для этого в теле функции задаётся нужное арифметическое действие.

<?php
function calculator()
{
$next = 5;
$next1 = 10;
$rezultat = $next + $next1;
echo $rezultat;
}
calculator(); //Выведет 15
?>

А теперь, обратите внимание, что во всех предыдущих примерах в теле функции была задана какая-то программа, и вывод результата выполнения на экран.

И тут возникает вопрос: а что если этот результат нам не нужно выводить на экран, а нужно его только получить, для того, чтобы использовать где-то в других частях кода?

Для этого у функции имеется свойство возврат значения (очень часто применяемое)

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

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

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

<?php
$next = 5;
$next1 = 10;
function calculator($next, $next1){
$resultat = $next + $next1;
return $resultat;
}
$nov = calculator(5,10); // Объявляем новую переменную и присваиваем ей возвращённый результат.
echo $nov;
?>

После оператора return, в теле функции писать какой либо код бессмысленно, он всё равно не выполнится.

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

Возвращаемые значения могут быть любого типа, в том числе массивы и объекты, и мы подробно этот процесс рассмотрим в одноимённых статьях. Кстати там и начнётся самое интересное.

Рассмотренные в этой статье свойства, относятся как к пользовательским, так и к стандартным, или встроенным функциям php. Разница лишь в том, что стандартные быстрее обрабатываются, так как сами являются частью языка.

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

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

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

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

Порядок выполнения программы задаёт программист, и применяет он для этого управляющие конструкции языка php. То есть управляющая конструкция — это команда на тот, или иной порядок выполнения программы.

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

Конструкции (возможны определения — инструкция, команда) могут быть как одно-строчными, так и составными, то есть собранными в блок. Блок тоже является отдельной конструкцией, последовательно выполняющей конструкции в ней заключённые.

Всего в PHP существует шесть основных групп управляющих конструкций. Это:

1. Условные операторы.
2. Циклы.
3. Конструкции выбора.
4. Конструкции объявления.
5. Конструкции возврата значений.
6. Конструкции включений.

Давайте рассмотрим их подробно, и все по порядку.

Условные операторы

Мы уже познакомились с условным операторами if, else, elseif в статье «Операторы php», так что сейчас, рассматривая их как управляющие конструкции, у нас получиться повторение пройденного, что как известно, никогда лишним не бывает.

Условные операторы — это самые часто-применяемые конструкции, не только в языке php, но и во всех алгоритмических языках программирования.

Пример одно-строчной конструкции if

<?php
if( $next == 0 )
{
echo "Это конструкция языка программирования";
}
?>

В этом примере конструкции if заданно условие: переменная $next должна быть равна нулю. Если это условие соответствует истине, то echo выполнится. Если нет — то откроется пустая страница.

Следующим будет пример составной конструкции.

<?php
$next = 0;
if( $next == 0 )
{
echo $vegetables." Овощи<br>";
echo $fruit." Фрукты<br>";
echo $berries." Ягоды<br>";
}
?>

Здесь так же переменной $next присвоено значение 0, и конструкция if, проверив его, выполняет блок конструкций echo.

Обратите внимание, что для переноса строки в php применяется, знакомый нам из html, тег <br>. В дальнейшем мы ещё не раз встретим html теги, применяемые в php коде.

И ещё отмечу, что отступы в php значения не имеют, и применяются только улучшения читабельности кода.

В предыдущем примере, мы рассмотрели вариант, когда инструкция выполняется, если верно заданное условие.

Теперь представьте, что нам нужно исполнить какой либо оператор не только когда условие конструкции if верно, но и тогда когда условие не верно.

В этом случае применяется конструкция else

<?php
$next = 1;
if( $next == 0 )
{
echo $vegetables. "Овощи";
}
else
{
echo $fruit. "Фрукты";
}
?>

В этом случае открывается не пустая страница, а запись «Фрукты».

Конструкция elseif

Эта конструкция ещё более расширяет возможности конструкций if и else. Представьте, что у нас более двух операторов, один из которых должен быть выполнен.

В таком случае, к предыдущим конструкциям, добавляется конструкция elseif.

<?php
$next = 0;
if( $next == 0 )
{
echo $vegetables. "Овощи";
}
elseif ($next == 0)
{
echo $fruit. "Фрукты";
}
else
{
echo $berries. "Ягоды";
}
?>

Теоретически, количество elseif не ограниченно. И сколько бы их не было, программа будет проверять каждую, пока не найдёт верный вариант, то есть true.

Конструкции выбора

Очень часто, при большом количестве операторов, применение конструкции elseif, становится не удобным из-за большого объёма кода.

В таком случае на помощь приходит конструкция switch-case, можно переключатель switch

Конструкция switch-case, по своему действию схожа с конструкцией if-else, но в отличие от последней позволяет получать в качестве результата более двух вариантов.

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

<?php
$next="Фрукты";
switch ($next) {
case "Овощи":
echo "Картофель";
break;
case "Фрукты":
echo "Яблоки";
break;
case "Ягоды":
echo "Вишня";
break;
}
//Выводится Яблоки
?>

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

Для значений не указанных в задании, в конструкции switch-case, применяется оператор default.

<?php
$next="Грибы";
switch ($next) {
case "Овощи":
echo "Картофель";
break;
case "Фрукты":
echo "Яблоки";
break;
case "Ягоды":
echo "Вишня";
break;
default:
echo "Шампиньоны";
}
//Выводится шампиньоны
?>

Если опустить оператор break, то программа обработает и выведет на экран все значения конструкции switch-case

<?php
$next="Овощи";
switch ($next) {
case "Овощи":
echo "Картофель";
case "Фрукты":
echo "Яблоки";
case "Ягоды":
echo "Вишня";
default:
echo "Шампиньоны";
}
/* Выводится
Картофель
Яблоки
Вишня
Шампиньоны */
?>

Ещё одной особенностью конструкции switch-case, является возможность объединения нескольких вариантов в одно выражение.

<?php
$next="Клён";
switch ($next) {
case "Овощи":
case "Фрукты":
case "Ягоды":
echo "Картофель<br>Яблоки<br>Вишня";
break;
case "Клён":
case "Дуб":
case "Ель":
echo "Лес";
break;
default:
echo "Шампиньоны";
}
// Выводится Лес
?>

Циклы, или конструкции повторения.

Циклы предназначаются для многократного (в отличие от конструкции if) выполнения операторов составляющих тело конструкции.

Процесс выполнения цикла, называется итерацией (iteration — повтор).

В php существует три вида циклов:

1. while и do-while — циклы с не определённым числом итераций.
2. for — цикл с заранее известным числом итераций.
3. foreach — цикл обработки (перебора) массива.

Конструкция while

Пример простейшего цикла с одним оператором, обычно их бывает больше.

<?php
$next = 1;
while ($next <= 8)
{
echo $next. "<br>" ;
$next++;
}
//Выводит числа от 1 до 8. Тег <br> располагает их столбиком
?>

Подробно рассмотрим, что тут происходит, то есть как работает данная программа.

В первой строке объявляется переменная $next, которой присваивается значение единица. Присваивание значения, называется инициализацией переменной.

Во второй строке программа проверяет условие while ($next <= 8), которое будет являться истиной (true).

В третьей строке выполняется первый цикл, так как единица меньше 8, и это подходит под определение true

В четвёртой, переменой, являющейся в этом случае оператором, присваивается оператор инкремента (++), увеличивающий каждое последующее значение оператора $next на единицу.

И программа будет обрабатывать, и выводить на экран каждое, следующее за единицей, целое число, пока не дойдёт до 9. И так как 9 окажется false, то цикл завершиться.

Конструкция do-while отличается тем, что условие цикла проверяется не до, а после итерации.

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

<?php
$next = 1;
do
{
echo $next;
}
while ($next++ <= 8);
//Выводит числа от 1 до 9 в одну строку.
?>

Как видите, хоть 9 и является false, однако очередная итерация всё же выполнилась, после чего программа проверила условие и цикл завершился.

Конструкция for, или цикл со счётчиком, по своей работе похож на цикл while, но имеет более компактную форму записи.

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

В следующем примере напишем оглавление к небольшой книге.

<?php
for ($next = 1; $next < 5; $next++ )
{
echo "- Страница" . $next . "<br>";
}
/*Выводит
-Страница 1
-Страница 2
-Страница 3
-Страница 4
-Страница 5 */
?>

Рассмотрим подробно три выражения записанных в условии (круглые скобки) цикла.

$next = 1; — переменная счётчик, начинающая отсчёт с единицы.
$next < 5; — определяет продолжительность цикла.
$next++ — определяет шаг изменения значения счётчика. В нашем случае равно единице.

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

<?php
for($next=1, $nev=1, $page="-Страницa"; $next<=5; $nev++, $next=$nev)
{
$page=$page . "-";
echo $page, $next . "<br>";
}
/*Выводит
-Страницa-1
-Страницa--2
-Страницa---3
-Страницa----4
-Страницa-----5 */
?>

Ещё одной особенностью for является возможность обходиться без конструкции echo.

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

В нём в условие цикла вводиться конструкция print

<?php
for($next=1; $next<=5; print $next, print "<br>" , $next++);
/*Выводит
1
2
3
4
5 */
?>

Конструкцию echo, в условие for, вводить нельзя.

У всех вышеприведённых конструкций, кроме do-while, имеется альтернативная форма записи — без фигурных скобок.

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

<?php
$next = 1;
while ($next <= 10):
echo $next;
$next++;
endwhile;
?>

Конструкция foreach — это специальный тип цикла, предназначенный только для перебора массива.

<?php
$next["помидор"] = "Красный";
$next["яблоко"] = "Зелёное";
$next["виноград"] = "Сладкий";
$next["гриб"] = "Белый";
foreach ($next as $key => $value)
{
echo "$value $key<br>";
}
/*Выводит
Красный помидор
Зелёное яблоко
Сладкий виноград
Белый гриб */
?>

Для немедленного выхода из цикла, при необходимости, существует конструкция break. После её выполнения, управление передаётся к выражению, следующему после цикла.

<?php
$next=0;
while ($next++<10)
{
if ($next==7) break;
echo "$next<br>";
}
/*Выводит
1
2
3
4
5
6 */
?>

Как видите, на седьмой итерации цикл прервался.

Конструкция continue, в отличие от break, прерывает только текущую итерацию, и переходит к следующей.

<?php
$next=0;
while ($next++<5)
{
if ($next==3) continue;
echo "$next<br>";
}
/*Выводит
1
2
4
5 */
?>

Как видите итерация 3 отсутствует, так как была прервана конструкцией continue

Конструкции объявления

Конструкции объявления в php представлены двумя элементами. Это конструкции declare и typeset.

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

Для удобства понимания кода, в основном используется конструкция declare. Применяется она для того чтобы установить команды (директивы) на выполнение блока.

В настоящее время распознаётся две директивы — это ticks и encoding

Директива ticks задаёт число тиков

<?php
declare(ticks=1);
// Далее сценарий блока
function tick_handler()
{
echo "Функция выполнена\n";
}
register_tick_function('tick_handler');
// Функция, будет исполняться при каждом тике
?>

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

<?php
declare(encoding='UFT-8');
?>

Конструкции включений

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

Так же конструкции включений применяются для уменьшения объёма кода скрипта, когда нужно ввести в код некий текст. Тогда в программу вводится файл txt.

Правда в таком случае возникает угроза безопасности скрипта, и для её решения вместе с txt файлом необходимо ввести в программу константу, а в подключаемых файлах проверять её существование.

Всего в php существует 4 типа конструкций включения, и все они принимают только один аргумент — путь к файлу:

include — подключает файл к программе, при его отсутствии выдаёт предупреждение;
require — подключает файл к программе, при его отсутствии прекращает работу скрипта;
include_once — допускает только одноразовое включение подключённого файла, а при его отсутствии выдает предупреждение;
require_once — допускает только одноразовое включение подключённого файла, а при его отсутствии прекращает работу скрипта;

Конструкции include_once и require_once удобны тем, что исключают путаницу при вложенных включениях, когда есть возможность повторного включения файлов, содержащих объявления функций.

9 Массив в php

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

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

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

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

Но давайте всё подробно и по порядку.

Создание одномерного массива с числовым индексом.

Имя массива, как и имя переменной начинается знаком доллара $.

Создать массив можно несколькими способами. Один из наиболее часто применяемых из них — использование конструкции array().

array() — языковая конструкция, предназначенная для создания массивов.

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

Пример:

<?php
$next=array("Чай", "Кофе", "Сок");
print $next[1];
//Выводит Кофе
?>

Как видите, числовой индекс прописывается в квадратных скобках. Если программист не задаёт индекс, как в этом примере, то php делает это автоматически. Для присвоения индекса применяется оператор =>

Нумерация начинается с нуля — первый элемент, и далее возрастает на единицу, на каждом следующем элементе. Поэтому, в нашем примере, вызывая элемент с индексом 1, мы увидели второй по счёту — «Кофе».

Чтобы увидеть наглядно структуру и содержание массива, вместо конструкции print, применяется функция print_r, а для более удобно-читаемого отображения, эта функция заключается в тег <pre>.

<?php
$next=array("Чай", "Кофе", "Сок");
echo "<pre>";
print_r($next);
echo "</pre>";
/* Выводит структуру и содержание массива
Array
(
[0] => Чай
[1] => Кофе
[2] => Сок
)*/
?>

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

<?php
$next=array(3 => "Чай", 7 => "Кофе", 8 => "Сок");
print $next[3];
//Выводит Чай
?>

Ещё один способ создания массива — это создание массива при помощи квадратных скобок, без применения конструкций и функций.

При этом способе не инициализированным переменным, которые являются элементами массива, присваивается числовой индекс и значение.

<?php
$next[0] = "Чай";
$next[1] = "Кофе";
$next[2] = "Сок";
print $next[0];
//Выводит Чай
?>

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

<?php
$next[] = "Чай";
$next[] = "Кофе";
$next[] = "Сок";
echo "<pre>";
print_r($next);
echo "</pre>";
/*Содержание массива
Array
(
[0] => Чай
[1] => Кофе
[2] => Сок
)*/
?>

Следующий способ создания числового массива — это создания числового массива функцией range().

range() создаёт массив содержащий диапазон чисел, причём в параметрах достаточно указать первое и последнее число диапазона.

<?php
$next = range(3,8);
echo "<pre>";
print_r($next);
echo "</pre>";
/*Содержание массива
Array
(
[0] => 3
[1] => 4
[2] => 5
[3] => 6
[4] => 7
[5] => 8
)*/
?>

Создание одномерного ассоциативного массива.

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

Способы создания такого массива, почти не отличаются от, рассмотренных выше, способов создания числовых массивов.

<?php
$next["Индийский"] = "Чай";
$next["Эспрессо"] = "Кофе";
$next["Апельсиновый"] = "Сок";
print $next["Апельсиновый"];
//Выводит Сок
?>

Попробуйте самостоятельно посмотреть содержание массива, и создать массив с конструкцией array()

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

Создание многомерного простого (числового) массива.

В отличие от одномерного, в многомерном массиве элементы определяются несколькими индексами. Количество индексов не ограничивается, но обычно не превышает трёх.

Давайте для начала напишем небольшое меню.

<?php
$next[0][0]="Напитки";
$next[0][1]="Выпечка";
$next[1][0]="Чебурек";
$next[1][1]="Пицца";
$next[1][2]="Слойка";
$next[2][0]="Чай";
$next[2][1]="Кофе";
$next[2][2]="Сок";
echo "<h3>".$next[0][0].":</h3>";
for ($a=0; $a2; $a++)
{
echo $next[2][$a]."<br>";
}
echo "<h3>".$next[0][1].":</h3>";
for ($b=0; $b2; $b++)
{
echo $next[1][$b]."<br>";
}
/*Выводит:
Напитки:
Чай
Кофе
Сок
Выпечка:
Чебурек
Пицца
Слойка*/
?>

Чтобы понять как это устроено и работает, давайте посмотрим структуру этого массива.

<?php
$next[0][0]="Напитки";
$next[0][1]="Выпечка";
$next[1][0]="Чебурек";
$next[1][1]="Пицца";
$next[1][2]="Слойка";
$next[2][0]="Чай";
$next[2][1]="Кофе";
$next[2][2]="Сок";
echo "<pre>";
print_r($next);
echo "</pre>";
/*Структура массива
Array
(
[0] => Array
(
[0] => Напитки
[1] => Выпечка
)
[1] => Array
(
[0] => Чебурек
[1] => Пицца
[2] => Слойка
)
[2] => Array
(
[0] => Чай
[1] => Кофе
[2] => Сок
)
)
*/
?>

Отсюда видно что наш многомерный массив состоит из трёх вложенных массивов, один из которых содержит заголовки разделов меню, а два других их содержание.

При выводе на экран, заголовки выделяются тегом <h3>, затем в конструкции for создаются три выражения (переменная — значение):

1. $a = 0 — счётчик начала отсчёта элементов.
2. $a многомерным ассоциативным массивом.

<?php
$A["napitci_h"] = array("name"=>"Чай", "grade"=>"Лисма", "price"=>"25$");
$A["napitci_k"] = array("name"=>"Кофе", "grade"=>"Арабика", "price"=>"100$");
$A["napitci_s"] = array("name"=>"Сок", "grade"=>"Яблочный", "price"=>"10$");
//Затем обращаемся к нужному элементу массива
print $A["napitci_h"]["name"]."<br>";
print $A["napitci_h"]["grade"]."<br>";
print $A["napitci_h"]["price"]."<br>";
?>

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

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

И последний тип массива, который мы рассмотрим в этой статье — это многомерный массив смешанного индексирования. В таком массиве применяются и числовые и строковые индексы.

<?php
$next["Напитки"] [1] = "Чай";
$next["Напитки"] [2] = "Кофе";
$next["Напитки"] [3] = "Сок";
print $next["Напитки"] [1];
?>

В PHP существует ещё много функций для работы с массивами, но цель этой статьи — показать только типы массивов, и некоторые способы их создания. Работу с массивами будем проводить в отдельной статье.

-4