Основы PHP

Правила именования переменных

Название переменных нельзя начинать с цифры. (только буквы и знаки подчёркивания). В названии использовать — буквы, цифры, знак нижнего подчёркивания и символы с ASCII кодами от 127 до 255. Правилами хорошего тона являются названия, составленные из словарных слов английского языка: через знаки подчёркивания ($name_var) или в стиле cemal ($nameVar)(первое с маленькой буквы, последующие первые буквы слов с большой).

 

Присвоение значений

 

$str = "Строка";

$num = 5;

 

Склеивание строк

 

echo "<p>Это " . $str . " " . $num . " </p>";

 

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

 

Константы

Константы не меняют своих значений. Нужны, например, для хранения путей, ip адресов, настроек, паролей. Для того, что-бы не «зашивать» в код абсолютные пути.

Константам принято давать имена буквами верхнего регистра. На константу ссылаются в скобках, например: echo (NAME);(а почему сейчас тогда без кавычек??).Задавать переменную и вывести функцией define. Синтаксис — define(«имя константы«, «значение константы«);

 

define("constantaname", "constantavar");

echo constantaname;

 

Вывести определённое, если константа существует(проверка — defined):

 

if (defined("constantaname")) {

echo "constantaname is defined";

} else {

echo (constantaname is NOT defined";

}

 

Типы данных

В php нет жёсткой типизации типов данных, т.е. нет необходимости объявлять его (тип).

 

В php три простых типа переменных:

  • целые
  • строковые
  • действиетльные с плавающей точкой

 

И два сложных типа:

 

  • объекты
  • массивы

 

Целые числа:

 

$my_int_10 = 50; // десятичная нотация

$my_int_8 = 061; // восьмиричная нотация (начинается с 0)

$my_int_16 = 0x20; // шестнадцатиричная нотация (начинается с 0x)

 

Числа с плавающей точкой:

 

$my_float = 7.3; // стандартныя нотация с десятичной точкой

$my_float2 = .071e3; // числа в экспоненциальном представлении

 

Строковые значения бывают двух типов — в двойных кавычках и одинарных. Разница в том, что если внутри строки, написанной в двойных кавычках, поставить переменную, то интерпретатор php подставит значение переменной, а при одинарных кавычках ничего не происходит, текст выводится как есть. Если нет необходимости работать с переменными внутри значений строк, то лучше использовать одинарные, т.к. быстрее, меньше нагружают сервер, интерпретатору не надо задумываться, есть ли переменные для пересчёта. Пример:

 

$my_num = 123;

echo "Вывод $my_num";

echo 'Вывод $my_num';

 

В первом случае выводится «Вывод 123?, во втором «Вывод $my_num».

 

Оператор преобразования.

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

 

  • (string) — строка
  • (intager) — целое число (сокращенно — (int))
  • (double) — число с плавающей точкой
  • (boolean) — булевское значение (true/false) (сокращенно — (bool))

 

Такой код:

$strtoint = "505.123";

$strtoint = (int) $strtoint;

echo $strtoint;

 

Выведет 505. Сначала значение было строкой, так как было в кавычках. Если бы я перевёл его в double, было бы 505.123, но intager — целое число.

 

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

 

$arif = 7 + 8;

$arif = $arif - 6;

$arif = $arif / 3;

$arif = $arif * $arif;

$arif = $arif % 2;

 

Пояснения требует, пожалуй, лишь последнее. % — остаток от деления. Т.е $arif к тому моменту имеет значение 9, % 2 делит его на два, и выдаёт остаток от деления, не считая результата. Т.е в данном случае — 1 (9/2 = 4 целых, остаток 1). Ведь так?

 

Если было два intager, на выходе будет intager, если один из них с плавающей точкой — double. То есть (int)2 + (double)1,45 + (double)2,55 будет равно 6.0, а не 6.

 

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

 

$arif = 7 + 8;

$arif -= 6;

$arif /= 3;

$arif *= $arif;

$arif %= 2;

 

Со склеиванием строк можно так же сократить, т.е. $a = $a . $b однотипна $a .= $b.

 

Инкремент и декремент.

 

Инкремент/декремент прибавляют/убавляют единицу соответственно.

 

$fff = 5;

echo $fff++;

echo ++$fff;

echo $fff--;

echo --$fff;

 

Задам переменную. Первые два оператора echo, в данном случае, — инкременты, второе — декременты. Отличие постановки знаком прямое, в первом случае сначала выводится значение переменной, а уже потом прибавляется/убавляется. Вывелось 5775. Сначала вывел $fff как есть, прибавил 1, следующим echo прибавил ещё 1, а уже потом вывел. Ведь в функциях, без вывода, разницы нет?

 

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

 

< — меньше

<= — меньше, либо равно

> — больше

>= — больше, либо равно

 

Сделаю так:

 

$sr = 8 > 3;

echo $sr;

 

Выведется 1, так как выражение верно(true), — перевелось в булево значение true/false. А два знака равно (==) охзначают приравнивание, например в условиях. (Обычное равно(=) — присвоение значения).

 

Логические операции

 

Существуют черыре главных (?) логческих булевых условия:

 

&& — И

|| — ИЛИ

! — НЕ

xor — ИСКЛЮЧАЮЩЕЕ ИЛИ

 

Например:

 

$s1 = true;

$s2 = false;

$s3 = $s1 && $s2;

$s4 = $s1 || $s2;

$s5 = !$s1;

$s6 = $s1 xor $s2;


$s3 — будет false (один из операндов — ложный). $s4 — true (один из операндов истинный). $s5 — false ($s5 — не $s1). $s6 — true (один из операндов истинный, в то время как другой — ложный).

 

Приоритетность операторов.

 

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

 

$f = 5 + $k >= 3 * $h + 15 - $m + $n++;

$f = (5 + $k) >= ((3 * $h) + (15 - $m) + $n++);

 

Тут становится сразу понятно, что это операция сравнения.

Задания

Задание 1

 

$a = 'Stroka';

$b = 33;

$c = 24.89;

define('DEFINEVAR', 'DEFINETRALALA');

$e = 080;

$f = 0x58;


// вывожу переменные

$together = $a . ' ' . $b . ' ' . $c . ' ' . DEFINEVAR . ' ';

$together .= $e . ' ' . $f . '<br />'; // для удобства разделил на две строки

echo $together;

 

Результат: Stroka 33 24.89 DEFINETRALALA 0 88 . При задавании значения константы, её название можно в кавычки не заключать. Как и её значение.

 

Задание 2

 

$together2 = '$a' . ' ' . '$b' . ' ' . '$c' . ' ' . 'DEFINEVAR' . ' ';

$together2 .= '$e' . ' ' . '$f' . '<br />'; // для удобства разделил на две строки

echo $together2;

 

Заключил переменные в одинарные кавычки, что привело к: $a $b $c DEFINEVAR $e $f.

 

Задание 3

 

$together3 = "$a" . ' ' . "$b" . ' ' . "$c" . ' ' . (DEFINEVAR) . ' ';

$together3 .= "$e" . ' ' . "$f" . '<br />'; // для удобства разделил на две строки

echo $together3;


Заключил переменные в двойные кавычки — читаются их значения, результат: Stroka 33 24.89 DEFINETRALALA 0 88

 

Задание 4

 

echo 010 . ' ';

echo 011 . ' ';

echo 012 . ' ';

echo 013 . ' ';

echo 014 . ' ';

echo 015 . ' ';

echo 016 . ' ';

echo 017 . ' ';

echo 018 . ' ';

echo 019 . ' ';

echo 020 . '<br />';

 

Вывел восьмиричные числа, вывелось: 8 9 10 11 12 13 14 15 1 1 16 . В восьмиричной системе исчисления числа идут от 0 до 7, поэтому 018 и 019 не считались, и равняются 1. Так же как 028 и 029 равняются 2.

 

Задание 5

 

echo 0x00 . ' ';

echo 0x01 . ' ';

echo 0x02 . ' ';

echo 0x03 . ' ';

echo 0x04 . ' ';

echo 0x05 . ' ';

echo 0x06 . ' ';

echo 0x07 . ' ';

echo 0x08 . ' ';

echo 0x09 . ' ';

echo 0x0A . ' ';

echo 0x0B . ' ';

echo 0x0C . ' ';

echo 0x0D . ' ';

echo 0x0F . ' ';

echo 0x10 . '<br />';

 

Вывел: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 15 16 . Узнать подробнее о таком выводе, не стандартные #112233.

 

Задание 6

 

echo '<p>«Я помню чудное мнгновение:<br />';

echo 'Передо мной явилавсь ты,<br />';

echo 'Как мимолётное виденье,<br />';

echo 'Как гений чистой красоты.»<br /><br />';

echo '<i>А. С. Пушкин</i></p>';

 

Каждая строчка выводится своим echo, присутствует перевод строки и автор курсивом.

 

Задание 7

 

echo '<p>«Я помню чудное мнгновение:<br />Передо мной явилавсь ты,<br />Как мимолётное виденье,<br />Как гений чистой красоты.»<br /><br /><i>А. С. Пушкин</i></p>';

 

То же самое четверостишье, но одним echo.

 

Задание 8

 

echo 10 + 'Привет';

echo ' ';

echo 10 + 12.5;

echo ' ';

echo 10 + 0x0A;

echo ' ';

echo '2.5Привет' + 7.5;

echo '<br />';

 

Получилось: 10 22.5 20 10

 

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

 

Задание 9

 

$xx = true;

$yy = false;

$zz = ($xx xor $yy);

echo '<br />Woo ' . $zz . ' boo!';


$xx = true;

$yy = true;

$zz = ($xx xor $yy);

echo '<br />Woo ' . $zz . ' boo!';


$xx = false;

$yy = false;

$zz = ($xx xor $yy);

echo '<br />Woo ' . $zz . ' boo!';


$xx = false;

$yy = true;

$zz = ($xx xor $yy);

echo '<br />Woo ' . $zz . ' boo!';

 

xor по сути сравнивает, разные они или нет. Разные — true. В данном примере, при разных значениях выдаёт 1. При одинаковых не 0, как предполагал, он вообще ничего не выдаёт. С цифрами сравнить с помощью не удалось, только булевы значения.




Рекомендуем почитать

 

Добавить комментарий


Ваше имя:


Комментарий:


Введите: Картинка