массив

Типы переменных

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

В языках с динамической типизацией не задаются типы переменных, что положили в конце, такого типа и переменная. Все эти типы — это внутренне устройство языка php. Не факт, что язык php, который имеет булев тип, он его хранит в памяти так же, как, например, C#. Вполне возможно, что в памяти они предствалены по-разному. Браузер ничего о типах не знает. Все данные он получает в виде строк. Когда что-то отдаем в браузер через echo или print, то все передаваемое конвертируется в строку.

В разных языках программирования разное колличество типов. В php — 8 простых типов:

  • Скалярные типы:
  1. boolean.
  2. integer (целые числа).
  3. float (число с плавающей точкой).
  4. string (строка).
  • Смешанные типы:
  1. array (массив).
  2. object (объект).
  • Специальные типы:
  1. resourse.
  2. NULL.

Тип boolean

Простейший тип, выражает истинность значения. Возвращает TRUE или FALSE (регистронезависимы). Используется в качестве флагов. При передаче в браузер true конвертируется в строку ‘1’, а false — приводится к пустой строке. Пример см. внизу.

Тип integer и float

Integer — это целые положительные и отрицательные числа. Дробные числа (вещественные или с плавающей точкой) — тип float. Пример см. внизу страницы.

Тип string

Строки можно помещать в одинарные и двойные кавычки. В двойные кавычки можно подставлять значение переменных. Внутри двойных кавычек можно использовать спецсимволы (они экранируются знаком ‘\’). Внутри двойных кавычек можно использовать одинарные кавычки (но не двойные снова, иначе ошибка кода). В других языках так нельзя делать. Примеры см. внизу страницы.

Тип string (heredoc)

Синтаксис:

$a = <<<LABEL
 текст и символы
 LABEL;

Т.е. Ставится некая уникальная метка (любое слово), которая характеризует эту строку. Внутри пишем любой текст и символы (спецсимволы не надо экранировать, это произойдет автоматически). В конце ставим такую же метку — как закрывающий тэг. У heredoc — три подводных камня, каждый может привести к критической ошибке:

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

При неправильном heredoc выскакивает опасная ошибка ‘unexpected $end’ (не найдено окончания блока кода) и указывает на конец кода. Найти ошибку в коде сложно. Поэтому возьмите за правило: если пишем блок кода, сначала открыли, потом закрыли, а затем уже пишем внутри блока код.

Тип NULL

Если в языке javascript есть понятие NULL и undeffined, и надо оба проверить, то в php легче. Переменная считается NULL, если:

  • Она не существовала.
  • Переменной была присвоена константа NULL.
  • Она была удалена с помощью unset ().
$a = false; //присвоили значение false
$b = true; //присвоили начение true
$c = 999; //тип integer
$d = 0111 //тип integer в восьмеричном формате
$e = 0x7FFFFFFF  //тип integer в шестнадцатеричном формате
$f = 1.2e2 //тип float
$f = 1.45 //тип float
echo "How are you $user"; //тип string двойные кавычки
echo "Hi \n\t $user"; //тип string спецсимволы
echo "How 'are' you?" //тип string одинарные кавычки внутри
$y = echo $ABC; // тип NULL, переменной не существует

Тип array

Если обратиться к переменной как к ‘$a[ ]’ — то мы обращаемся к массиву. Квадратные скобки указывают на ячейку массива. Нумерация ячеек начинается с нуля. Есть функция count (массив) — считает количество элементов массива. Если присваивать значение пустой ячейке, то она автоматически нумеруется (присваивается индекс наибольший, следующий за наибольшим).

$user[]= "Jane";//индекс 0
$user[]= "admin";//индекс 1
$user[]= "12345";//индекс 2
//тоже, что и
$user[0]= "Jane";//индекс 0
$user[1]= "admin";//индекс 1
$user[2]= "12345";//индекс 2
//или
$user = array("Jane", "admin", "12345");
//тоже, что и
$user = array(0=>"Jane", 1=>"admin",
2=>"12345");
$cnt = count($user); //Считаем ячейки
echo $user[1];// выведет вторую ячейку admin

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

Функция для просмотра содержимого массива — print_r ($массив). В итоге получим табличку из ключ => значение. Недостатки: не видно, сколько всего ячеек, если их много, то устанешь считать. Нам не видно, какие типы там лежат.

Поэтому для более детального просмотра содержимого массива есть функция ‘var_dump ($array)’. Она показывает сразу количество ячеек в массиве, показывает типы в ячейках (string, int, bool).

Ассоциативный массив

Если пользователь прислал много данных о себе (e’mail, пароль, телефон, адрес, ФИО), то долго будем вспоминать, по каким номерам (ячеек массива) их вывести в тексте. Поэтому ячейкам задаются не номера, а имена. А вывести значение ячейки можно по имени.

$user["name"]= "John";
$user["login"]= "root";
$user["password"]= "p@ssw0rd";
//можно мешать индексы и имена ячеек
$user[] = "312-34-85";// имеет индекс 0
echo $user["name"];//John

Многомерный массив

Часто встречаются многомерные массивы. Один массив внутри другого, и так до бесконечности. Вложенность не ограничена.

$users = array(
0 => array(
"login" => "admin",
"password" => "12345"),
1 => array(
"login" => "Jane",
"password" => "12345")
);

Доступ к символу в строке

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

$z = 'Good morning';
$f = $z{0}; //выведет первый символ G
$end = $z{strlen($z)-1}; // вернет последний символ в строке - g



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

Ваш e-mail не будет опубликован.