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

Навигация по статье:

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

<p>Это будет проигнорировано PHP и передано серверу.</p>

<?php //... Здесь PHP-код ?>

<p>Это тоже будет проигнорировано PHP и передано серверу.</p>

<? 
//... Здесь PHP-код 
// Здесь используется короткий открывающий тэг
// short_open_tag (php.ini)
?>

<p>И это будет проигнорировано PHP и передано серверу.</p>

<?php
//... еще код
//Скрипт заканчивается  без закрывающего тега PHP

Комментарии

<?php
//Это однострочный комментарий в стиле c++

# Это комментарий в стиле оболочки Unix

/* 
Это многострочный комментарий
еще одна строка комментария 
*/

Особенности PHP

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

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

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

Вывод данных

<?php
echo "Привет мир!";
print "Привет мир!";

//Некоторые предпочитают передачу нескольких аргументов
echo 'Эта', 'строка', 'была', 'создана', 'несколькими параметрами.';

//Вывод результата функции
echo strftime('%d-%B-%Y, %A');

Переменные

  • Переменные в PHP начинаются со знака доллара ($)
  • Имя переменной должно начинаться с буквы или символа подчеркивания
  • Последующие символы в имени переменной могут быть буквами, цифрами или символом подчеркивания в любом количестве
  • Имя переменной чувствительно к регистру

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

// Присвоим переменной $x значение 10
$x = 10;
// Добавим к значению в переменной $x значение 15
$x = $x + 15;
// Скопировали значение переменной $x в переменную $y
$y = $x;
// Выведем значения переменных $x и $y
echo $x, $y;
// Удалим переменную $x
unset($x);
// Выведем значения переменных $x и $y
echo $x, $y;
// Вывод значения переменной
$age = 25;
<h1>Вам <?php echo $age ?>лет</h1>
// Что и
<h1>Вам <?=$age ?>лет</h1>
// Преобразование кодировок
echo iconv("windows-1251", "UTF-8", $krakozyabry);

Константы

define("USER_NAME", "Вася");
echo USER_NAME; // выводит"Вася"
define("ONE_HUNDRED", 100);
define("ONE_HUNDRED_TEN", ONE_HUNDRED + 10);
const TWO_HUNDRED = 200;// PHP 5.3
const TWO_HUNDRED_TEN = TWO_HUNDRED + 10;// PHP 5.6

Ошибки в PHP

Уровни ошибок:

  • E_PARSE
  • E_ERROR
  • E_WARNING
  • E_NOTICE
  • E_DEPRECATED

Директивы PHP.INI

  • display_errors = on
  • error_reporting = E_ALL & ~E_NOTICE
// Включаем вывод всех ошибок
error_reporting(E_ALL);
// Отключаем вывод всех ошибок
error_reporting(0);
// Включаем определённые уровни ошибок
error_reporting(E_ERROR | E_WARNING);
error_reporting(E_ALL & ~E_DEPRECATED);

Типы данных: числа

// Целые числа (integer)
$int = 1234; // десятичное число
$int = -123; // отрицательное число
$int = 0123; // восьмеричное число(эквивалентно 83 в десятичной системе)
$int = 0x1A; // шестнадцатеричное число(эквивалентно 26 в десятичной системе)
$int = 0b11111111; // двоичное число(эквивалентно 255 в десятичной системе)
// Числа с плавающей точкой (float, также известны как double и real)
$float = 1.234;
$float = 1.2e3;
$float = 7E-10;

Типы данных: строки

// Строка(string) -это набор символов, где символ -это то же самое, что и байт
echo 'это простая строка в апострофах';
echo 'это простая строка в двойных кавычках';
echo "Это будет развернуто:\n в две строки";
echo 'А это не будет развернуто:\n в две строки';
$name = "John"; $age = 25;
echo "Значения переменных $name и $age подставятся в строку";
echo 'А здесь значения переменных $name и $age неразворачиваются';
HEREDOC
	подставятся в строку, а сама строка развернётся
	Значения переменных $name и $age
HEREDOC;
// Экранирование переменных
$juice = "apple";
// Проблема 
echo "He drank some $juicejuice."; echo "He drank some juice made of $juices.";
// Решение
echo "He drank some juice made of {$juice}s.";
echo "He drank some juice made of ${juice}s.";
// Доступ к символу в строке (фактически, к байту!)
$str = 'This is a test.';
// Получение первого символа в строке $first = $str{0};
// Получение третьего символа в строке
$third = $str{2};
// Получение последнего символа в строке $last = $str{strlen($str)-1};
// Изменение последнего символа в строке
$str{strlen($str)-1} = '!';

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

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

Конкатенация строк

$a = "Hello ";
$b = $a ."World!";
// $b теперь содержит строку "Hello World!"
$a = "Hello"; $b = "World!";
$c = $a . " " .$b;
// $c теперь содержит строку "Hello World!"
// Кстати, $d тоже содержит строку "Hello World!"
$d = "$a $b";

Типы данных: boolean и NULL

$x = true; // присвоить $x значение TRUE
$y = false; // присвоить $y значение TRUE
$z = null; // присвоить $z значение NULL
unset($x);
echo gettype($x); // NULL

Манипуляции с типами

// Проверка типов
$str = "John";
$int = 10;
$bool = true;
echo gettype($str); // "string"
echo gettype($int); // "integer"
echo gettype($bool); // "boolean"
echo gettype($x); // "NULL"
is_string($str); // true
is_integer($int); // true
is_boolean($bool); // true
is_null($x); // true
// Приведение типов
$int_from_str =(int)$str; // 0
$str_from_int =(string)$int; // '10'
$bool_from_int =(bool)$int; // true
// Было ли присвоено переменной какое-либо значение?
isset($str); // true
isset($x); // false
$x = null;
isset($x); // false

Управление кодом: if

Управление кодом: if
$shop = true;
// Одна инструкция
if ($shop) echo "Иду в магазин";
	echo "Иду домой";
// Группа инструкций
if ($shop) {
	echo "Иду в магазин";
	echo "Покупаю хлеб";
}
echo "Иду домой";

Таблица сравнения типов

Управление кодом: if

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

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

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

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

Управление кодом: else

Управление кодом: else
$shop = "open";
// Одна инструкция
if ($shop == "open")
	echo "Иду в магазин";
else echo "Иду в киоск";
echo "Иду домой";

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

// Тернарный оператор
if ($shop == "open") 
	echo "Иду в магазин";
else echo "Иду в киоск";

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

// NULL coalescing оператор (PHP7)
echo isset($name) ? $name: "Unknown";
echo $name?? "Unknown";

Управление кодом: elseif

Управление кодом: elseif
if ($a > $b) {
	echo "a больше,чем b";
} elseif ($a == $b) {
	echo "a равноb";
} else {
	echo "a меньше, чем b";
}

Управление кодом: switch

$i = 20;
switch ($i) {
 case 0: 
	echo "Результат: 0";break; 
 case 1: 
	echo "Результат: 1";break;
 case 2: 
	echo "Результат: 2";break;
 case 3: 
	echo "Результат: 3";break;
 case 4: 
	echo "Результат: 4";break;
 default: echo "Результат: много";
}

Типы данных: массив

// Создание пустого массива
$arr = []; // До PHP 5.4 $arr = array();
// Создание массиваc элементами
$arr = ["John", "root", "1234"]; // До PHP 5.4 $arr = array("John", "root", "1234");
// Обращение к элементу массиваecho 
$arr[1]; // root
// Добавление элементов в массив
$arr[] = 25;$arr[] = true;
// Сколько элементов в массиве?
echo count($arr); // 5
// Выводим удобочитаемую информацию о переменной
print_r($arr);
// Выводим полную информацию о переменной
var_dump($arr);
// Ещё раз об индексации элементов массива
// Если массив не существует, он будет создан
$arr[] = 1; // Массив с одним элементом с ключом 0
$arr[5] = 2; // Добавили второй элемент с ключом 5
$arr[] = 3; // Добавили третий элемент с ключом 6
unset($arr); // Удалили массив
$arr = [12=>1, 5=>2]; // Создали массив из двух элементов с ключами 12 и 5
$arr[] = 3; // Добавили третий элемент с ключом 13
unset($arr[12]); // Удалили элемент массива с ключом 12
// Ассоциативный массив
$user = [
  "name"=>"John",
  "login"=>"root",
  "password"=>"1234",
  "age"=>25,
  true
];
echo $user["name"]; // John
echo $user[0]; // 1
// Многомерный массив
$users[0]= [
  "login" => "john",
  "pass" => "1234"
];

$users[1]= [
  "login" => "mike",
  "pass" => "5678"
];
echo $users[1]["login"]; // mike