Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Автоматическое преобразование типов




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

<?php

$var = "2"; // $var это строка (ASCII 48)

$var += 3; // $var теперь целое число (5)

$var = $var + 2.7; // $var теперь число с плавающей точкой (7.7)

$var = 8 + "23 февраля"; // $var это целое число (31)

?>

Приведение типов

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

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

  • (int), (integer) - приведение к integer;
  • (bool), (boolean) - приведение к boolean;
  • (float), (double), (real) - приведение к float;
  • (string) - приведение к string;
  • (array) - приведение к array;
  • (object) - приведение к object;
  • (unset) - приведение к NULL (PHP 5).

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

Преобразование в булев тип

<?php
var_dump((bool) ""); // bool(false)

var_dump((bool) "false"); // bool(true)

var_dump((bool) -4); // bool(true)
var_dump((bool) 3); // bool(true)
var_dump((bool) "строка"); // bool(true)

var_dump((bool) array()); // bool(false)
var_dump((bool) 1.4e2); // bool(true)
var_dump((bool) array(31)); // bool(true)
?>

Операторы

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

Все операторы делятся на группы, в зависимости от количества операндов (принимаемых значений):

· Унарные операторы – работают с одним операндом. Например «!» - логическое отрицание.

· Бинарные операторы – работают с двумя операндами. Например «=» - оператор присваивания.

· Также существует единственный тернарный оператор, который принимает три значения – это оператор «?», один из условных операторов.

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

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

-$i Отрицание Смена знака $i.

$i + $j Сложение Сумма $i и $j.

$i - $j Вычитание Разность $i и $j.

$i * $j Умножение Произведение $i и $j.

$i / $j Деление Частное от деления $i на $j.

$i % $j Деление по модулю Целочисленный остаток от деления $i на $j.

$i** $j Возведение в степень Результат возведения $i в степень $j. Добавлен в PHP 5.6.

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

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

Результатом выполнения оператора присваивания является само присвоенное значение. Таким образом, результат выполнения " $a = 3 " будет равен 3. Это позволяет делать действия, подобные следующему:

<?php
$a = ($b = 4) + 5; // $a теперь равно 9, а $b было присвоено 4.
?>

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

Пример Название Результат

$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 строго больше $b.

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

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

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

PHP поддерживает префиксные и постфиксные операторы инкремента и декремента в стиле языка C.

Примечание. Операторы инкремента/декремента влияют только на строки и числа. Массивы, объекты и ресурсы не изменяются. Декремент NULL также не даст никакого эффекта, однако инкремент даст значение 1.

Перечислим операторы инкремента и декремента:

Пример Название Действие

++$a Префиксный инкремент Увеличивает $a на единицу, затем

возвращает значение $a.

$a++ Постфиксный инкремент Возвращает значение $a, затем увеличивает $a на единицу.

--$a Префиксный декремент Уменьшает $a на единицу, затем возвращает значение $a.

$a-- Постфиксный декремент Возвращает значение $a, затем уменьшает $a на единицу.

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

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

Пример Название Результат

$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.

Смысл двух разных операторов "and" и "or" в том, что они выполняются с различными приоритетами.

Строковые операторы

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

Второй - оператор присваивания с конкатенацией ('.='), который присоединяет правый аргумент к левому.

Операторы, работающие с массивами

Пример Название Результат

$a + $b Объединение Объединение массива $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.

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

Приоритет оператора

Приоритет оператора определяет, какое действие будет выполняться раньше. Например, выражение 3 + 2 * 2 дает значение 7, а не 10, так как у оператора умножения «*» более высокий приоритет выполнения, чем у оператора сложения «+». Круглые скобки могут использоваться для принудительного указания порядка выполнения операторов. Например, выражение (3 + 2) * 2 дает при вычислении значение 10.

Если операторы имеют равный приоритет, то их группировка определяется их ассоциативностью, или направлением выполнения. Например, оператор «-» имеет левую ассоциативность, поэтому 2 - 4 - 1 группируется как (2 - 4) - 1 и равно -3. С другой стороны, у «=» правая ассоциативность, поэтому $a = $b = $c группируется как $a = ($b = $c).

Приоритет выполнения операторов от меньшего к большему (1 – самый низкий, 20 – самый большой):

1,

2 or

3 xor

4 and

5 print

6 = += -= *= /=.= %= &= |= ^= <= >=

7?:

8 ||

9 &&

10 |

11 ^

12 &

13 < <= > >=

14 < >

15 + -.

16 * / %

17 @

18! ~ ++ -- (int) (float) (string) (array) (object)

19 [

20 new

 

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

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

Инструкции языка PHP можно объединять в группы при помощи оператора «{}» - фигурных скобок. Используя управляющие конструкции, выполнение группы инструкций можно, например, пропускать, или повторять определенное количество раз. Кроме того, управляющие конструкции используются для подключения внешних скриптов.

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

Синтаксис конструкции if:

if (условие)

инструкция

или

if (условие) {

блок инструкций

}

Управляющая конструкция if позволяет PHP выполнять инструкции, только в том случае, если условие является истинным. Условие может представлять собой любое выражение, даже одиночную переменную. Во время работы конструкции if выражение вычисляется, и результат приводится к типу данных boolean. Если результатом является true, инструкции выполняются, а если false, то игнорируются.

Принцип действия конструкции if представлен на рисунке 130:

Рисунок 130 – Принцип действия конструкции if

Пример:

Пусть $day – переменная, в которой хранятся название дней недели. Мы хотим проверить, является ли текущий день выходным.

$day='Вс';

If ($day=='Вс') echo 'Выходной';

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

$day='Сб';

if ($day=='Вс'||$day=='Сб') echo 'Выходной';

Результат выполнения приведен на рисунке 131:

Рисунок 131– результат выполнения примера

Else

Конструкция else не используется самостоятельно, а расширяет возможности конструкции if:

if (условие) {

блок инструкций

}

else {

блок инструкций

}

Инструкции в блоке else выполнятся только в том случае, если условие в инструкции if вернет значение false.

Принцип действия конструкции else представлен на рисунке 132:

Рисунок 132 – Принцип действия конструкции else

Пример.

$day='Пн';

if ($day=='Вс'||$day=='Сб') {

echo 'Выходной';

} else {

echo 'Пора на работу';

}

Результат выполнения приведен на рисунке 133:

Рисунок 133– результат выполнения примера

Elseif/else if

Конструкция elseif (else if) – это еще одно расширение конструкции if:

if (условие) {

блок инструкций

}

elseif (условие) {

блок инструкций

}

else {

блок инструкций

}

Это дополнительное условие, которое выполнится в том случае, если не выполнится условие if, и выражение в скобках вернет true. Если же оба условия вернут false, то выполнится блок else (если есть). В случае истинности первого условия, все дальнейшие будут проигнорированы. Можно использовать несколько elseif, в этом случае выполнится первое же истинное.

Принцип действия конструкции else представлен на рисунке 134:

Рисунок 134 – Принцип действия конструкции else if

Пример:

$day='Пт';

if ($day=='Вс'||$day=='Сб') {

echo 'Выходной';

} elseif ($day=='Пт') {

echo 'Немного осталось';

} else {

echo 'Пора на работу';

}

Результат выполнения приведен на рисунке 135:

Рисунок 135– результат выполнения примера

While

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

Однократное выполнение целого блока инструкций называется итерацией. Принцип действия циклических конструкций представлен на рисунке 136.

Рисунок 136 – Принцип действия циклической конструкции

Синтаксис конструкции while:

while (условие)

инструкция

либо:

while (условие) {

блок инструкций

}

Так же, как и в конструкции if, условие в скобках может представлять собой любое выражение или переменную. Действия в цикле while будут повторяться до тех, пока условие будет возвращать значение true. Выполнение прекратится в том случае, если будет возвращено значение false. Прекращение повторения итераций называется выходом из цикла.

Пример:

$i=0;

while ($i<10) {

echo $i. ' ';

$i++;

}

Результат выполнения приведен на рисунке 137:

Рисунок 137 – Результат выполнения примера

 

Do-while

Синтаксис конструкции do-while:

do {
блок инструкций
} while (условие);

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

Пример:

$i=10;

do {

echo $i. ' ';

$i++;

} while ($i<10);

Результат выполнения приведен на рисунке 138:

Рисунок 138 – Результат выполнения примера

For

Конструкция for – еще одна разновидность циклов. Ее также называют «цикл со счетчиком», так как в синтаксисе цикла for уже заложено изменение переменной, которая участвует в условии выполнения цикла.

Синтаксис цикла for:

for (выражение1; выражение2; выражение3)

инструкция

или

for (выражение1; выражение2; выражение3){

блок инструкций

}

Здесь:

· выражение1 – выражение, которое выполняется только один раз, перед первой итерацией;

· выражение2 – непосредственно условие;

· выражение3 – выполняется при каждой итерации.

На практике это чаще всего выглядит так:

for ($i = 1; $i <= 10; $i++) {
блок инструкций

}

В данном случае $i – это переменная-счетчик, значение которой увеличивается на единицу после каждой итерации.

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

for (;;) {
блок инструкций

}

Пример:

Выведем на экран числа месяца с 1 по 31, приняв, что 1 число – это понедельник. Для аккуратного отображения используем тег html <table>:

echo '<table><tr>';

for ($i = 1; $i <= 31; $i++) {

echo '<td>'.$i.'</td>';

if ($i%7==0) echo '</tr><tr>';

}

echo '</table>';

Результат выполнения приведен на рисунке 139:

Рисунок 139 – Результат выполнения примера

 

Foreach

Это особый тип цикла, созданный специально для работы с массивами. Синтаксис foreach:

foreach (имя_массива as имя_элемента)

{

действия;

}

Конструкция foreach «пробегает» поочередно по всем элементам массива «имя_массива» используя «имя_элемента» как способ обращения к ним в рамках текущей итерации.

Пример.

Дополним пример из описания цикла for. Пусть в массиве $days хранятся названия дней недели, которые мы выводим в первой строке таблицы до того, как вывести числа:

$days= array("Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс");

echo '<table><tr>';

foreach ($days as $day) {

echo '<td>'.$day.'</td>';

}

echo '</tr><tr>';

for ($i = 1; $i <= 31; $i++) {

echo '<td>'.$i.'</td>';

if ($i%7==0) echo '</tr><tr>';

}

echo '</table>';

Результат выполнения приведен на рисунке 140:

Рисунок 140 – результат выполнения примера

Break

Иногда существует необходимость прервать выполнение цикла до того, как условие перестанет выполняться. Для этого используется конструкция break.

Пример:

$i=0;

while(1) {

if($i==10) break;

echo $i. ' ';

$i++;

}

Результат выполнения приведен на рисунке 141:

Рисунок 141– результат выполнения примера

Continue

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

Пример:

$i=0;

while($i<10){

if($i==5) {

$i++;

continue;}

echo $i.' ';

$i++;

}

Результат выполнения приведен на рисунке 142:

Рисунок 142 – результат выполнения примера

Switch

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

Синтаксис switch:

switch (выражение)

{

case значение1:

выражения1;

break;

case значение2:

выражения2;

break;

...

default:

выраженияN;

break;

}

switch по очереди сравнивает значение выражения с вариантами значений, указанных в case. Если значения совпадают, выполняется соответствующий блок, после чего конструкция break прерывает выполнение проверки. Если ни один из вариантов не подходит, выполняются действия по умолчанию – блок default.

Особенностью является то, что значения можно группировать:

switch (выражение)

{

case значение1:

case значение2:

case значение3:

case значение4:

выражения1-4;

break;

case значение5:

выражения5;

break;

...

default:

выраженияN;

break;

}

Пример.

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

$today – переменная, в которой хранится количество оставшихся дней.

$cut – последняя цифра этого числа, полученная с помощью оператора % - остаток от деления.

$cut=$today%10;

if($today<10||$today>20){

switch ($cut) {

case 1:

$daystr ='день';

break;

case 2:

case 3:

case 4:

$daystr ='дня';

break;

default:

$daystr ='дней';

}

}

echo 'Осталось '.$today.' '.$daystr;

Результат выполнения приведен на рисунке 143:

Рисунок 143 – результат выполнения примера

 

 

Include

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

Синтаксис:

include 'имя_файла';

Require

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

Синтаксис:

require 'имя_файла';

Include_once

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

Синтаксис:

include_once 'имя_файла'

Require_once

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

Синтаксис:

require_once 'имя_файла';

Return

Прерывает выполнение функции или подключаемого файла и возвращает значение, если оно задано. Если нет, возвращает NULL.

 

Функции

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

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...