Главная » PHP » Основы PHP
Основы 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, как предполагал, он вообще ничего не выдаёт. С цифрами сравнить с помощью не удалось, только булевы значения.
Рекомендуем почитать