Переменные выполняют работу - хранение данных в оперативной памяти, а за хорошую работу надо платить. Именно поэтому переменная представлена в виде знака доллара и названия переменной. К примеру: $variable . Сама по себе переменная существовать не может. Ей нужны её данные так-же, как нам холодильник. При помощи присваивания мы кладём в переменную данные. Присваивание выглядит следующим образом: $var = что-то; Правильное имя переменной должно начинаться с буквы или символа подчеркивания с последующими в любом количестве буквами, цифрами или символами подчеркивания. Так же как и наш холодильник, переменная хранит еду. Еда бывает разных типов - напитки, гарниры, салаты, печеное, молочные продукты и т.д. Данные тоже бывают разных типов.. целые числа, дробные числа, наборы букв, наборы других данных и еще несколько. Целое число ( Integer ) Как вам известно, числа бывают положительные, отрицательные и в разных системах исчисления. Чаще всего подразумевается что целое это число из множества Z = {..., -2, -1, 0, 1, 2, ...}. Предел совершенства наших компьютеров позволяет использовать в качестве целого числа числа из диапазона Signed: −2,147,483,648 to +2,147,483,647. <?PHP
$a = 1234; // десятичное число $a = -123; // отрицательное число $a = 0123; // восьмеричное число (эквивалентно 83 в десятичной системе) $a = 0x1A; // шестнадцатеричное число (эквивалентно 26 в десятичной системе)
?>
Возможно тебе будет любопытно что произойдёт если указать число вне диапазона.. Я тебе напомню попробовать в конце урока =) Дробные числа ( Float ) Числа с плавающей точкой (они же числа двойной точности или действительные числа) отличная кандидатура на хранение к примеру результата деления 7 на 3 <?PHP
$a = 1.234; $b = 1.2e3; // 1.2 x 10^3 $c = 7E-10; // Из курса математики напомню что буквой e обозначают экспоненту.
?> Как правило диапазон возможностей здесь немного шире как правило, ~1.8e308 с точностью около 14 десятичных цифр (64-битная система) Довольно часто простые десятичные дроби вроде 0.1 или 0.7 не могут быть преобразованы в свои внутренние двоичные аналоги без небольшой потери точности. Это может привести к неожиданным результатам. Это связано с невозможностью точно выразить некоторые дроби в десятичной системе счисления конечным числом цифр. Например, 1/3 в десятичной форме принимает вид 0.3333333. . .. Строки ( String ) Строка - это набор символов. В PHP символ это то же самое, что и байт, это значит, что возможно ровно 256 различных символов. Замечание: Нет никаких проблем, если строка очень велика. Практически не существует ограничений на размер строк, налагаемых PHP, так что нет абсолютно никаких причин беспокоиться об их длине. Строки в php можно определить тремя способами: одинарными кавычками, двойными кавычками и heredoc синтаксисом. <?PHP
echo 'это простая строка';
echo 'Также вы можете вставлять в строки символ новой строки таким образом, поскольку это нормально';
// Выведет: Однажды Арнольд сказал: "I'll be back" echo 'Однажды Арнольд сказал: "I\'ll be back"'; // Обрати внимание: в строке присутствует одинарная кавычка. Для того, чтобы php // понял, что это не конец строки, а часть ее, нам нужно ему об этом сообщить. // Обратный слэш выполняет функцию Экранирования.
// Выведет: Это не вставит: \n новую строку echo 'Это не вставит: \n новую строку'; // В операционных системах используются особые специальные символы в тексте // которые помогают системе понять, где находится конец строки и начинается новая, // где находится табуляция и где вообще заканчивается весь текст. // Символ \n обозначает конец строки и переход на новую. // Слэш является частью символа, а не экранированием. // Если бы php всё таки вставил этот символ, то мы бы получили вывод в две строки: // Это не вставит: // новую строку
// Выведет: Переменные $expand также $either не подставляются echo 'Переменные $expand также $either не подставляются';
?> Строка в двойных кавычках Так же как и в одинарных, текст взятый в двойные кавычки это строка. $var = "val"; Если строка определяется в двойных кавычках, либо при помощи heredoc, переменные внутри нее обрабатываются. Если интерпретатор встречает знак доллара ($), он захватывает так много символов, сколько возможно, чтобы сформировать правильное имя переменной. Если вы хотите точно определить конец имени, заключайте имя переменной в фигурные скобки. <?PHP
$beer = 'Heineken'; echo "$beer's taste is great"; // работает, "'" это неверный символ для имени переменной echo "He drank some $beers"; // не работает, 's' это верный символ для имени переменной echo "He drank some ${beer}s"; // работает echo "He drank some {$beer}s"; // работает
?> Heredoc-текст ведет себя так же, как и строка в двойных кавычках, при этом их не имея. Это означает, что вам нет необходимости экранировать кавычки в heredoc. Напомню что если в строке определенной кавычками встречается кавычка, нужно сообщить php что это часть строки - экранировать кавычку. Как в примере $var='I\'m'; <?PHP
echo <<<HEREDOC1 Меня зовут "$name". Я печатаю very$fast. Теперь я вывожу very{$fast}. Это должно вывести заглавную букву 'A': \x41 HEREDOC1;
?> В данном примере строка "Меня зовут ... ... букву А" образовывается при помощи синтаксиса HereDoc. Обратите внимание что вместо кавычек в начале и конце строки стоит название строки - HEREDOC1. <<<HEREDOC1 означает начало строки под названием HEREDOC1, а HEREDOC1; её конец. Массив ( Array ) Массив в php это холодильник хранящий набор продуктов. <?PHP
$array = Array('Сыр','Колбаса');
?> В данном примере в нашем холодильнике array находятся два продукта относящиеся к категории Строк (и потому заключены в кавычки). Необычным тебе может показаться что счёт продуктов в программировании начинается с нуля. Именно поэтому в нашем массиве нулевой элемент будет 'Сыр', а первый элемент 'Колбаса'. <?PHP
$array = Array('Сыр','Колбаса'); // Определяем массив с двумя строками echo $array[0]; // Обращение к нулевому элементу. Выведет Сыр. $array[1] = 'Мороженое'; // Присвоение первому элементу. заменяем колбасу на молоко echo $array[1]; // Выведет Мороженое.
?> Ассоциативные массивы С таким же успехом как и в предыдущем примере, элементами массива могут быть не только строки, но и другие переменные. $array = Array($var1 , $var2); У любой переменной есть название и есть значение, а это значит что в массив мы можем также записать пары данных в виде название-значение. Массив такого рода называется ассоциативным благодаря ассоциации названия и значения, а название в таком массиве называется ключом. $arr = Array('key'=>'val' , 'key2'=>'val2'); Таким образом в массиве нет нулевого и первого элемента, но есть элемент key и элемент key2. <?PHP
$arr = Array('key'=>'val' , 'key2'=>'val2'); // Определяем массив с двумя строками echo $arr['key']; // Обращение к элементу с ключом key. Выведет val echo $arr[0]; // Обращение к нулевому элементу. Ошибка. Нет такого элемента $arr['key2'] = 'Мороженое'; // Присвоение элементу с ключом key2 нового значения. echo $arr['key2']; // Выведет Мороженое.
?> Многомерные массивы Массив может содержать любой тип данных в том числе и другой массив. Массив массивов называется многомерным массивом. Всего есть два типа массивов - числовые и ассоциативные. Первый вид представляет из себя массив с ключами в виде чисел как в самом первом примере. Всё остальное является ассоциативным массивом. <?PHP
$ARRAY = Array // числовой. Ключи 0,1 и 2 ( Array('Сыр','Колбаса') , // числовой. Ключами являются 0 и 1 Array('key'=>'val' , 'key2'=>'val2') , // Ассоц. Ключи key и key2 Array('key3'=>'val3', 'Чипсы') // Тоже Ассоц. Ключи key3 и 0 );
// Для обращения к какому либо элементу многомерного массива, к примеру к val3 // следует обращаться так: echo $ARRAY[2]['key3']; // В массиве ARRAY обращаемся сначала к элементу номер 2 [ Array('key3'=>'val3', 'Чипсы') ] // а там к элементу с ключом key3
$arr = array("somearray" => array(6 => 5, 13 => 9, "a" => 42)); echo $arr["somearray"][6]; // 5 echo $arr["somearray"][13]; // 9 echo $arr["somearray"]["a"]; // 42
?> Создание массива и его наполнение Содержание массива может быть задано как это было в примерах - заранее. $arr = Array(1,2,3); // ключи 0,1 и 2 Так же как мы присваивали ранее элементу в массиве другое значение можно создать и новый элемент $arr[3] = 5; // Создаётся элемент с индексом 3 и ему тут же присваивается число (integer) 5. Попробуй предположить что произойдёт при создании элемента $arr[] = 6;. В этом случае, создастся элемент в массиве, ему присвоится значение 6, а индекс с которым элемент запишется в массив будет максимальный целочисленные уже существующий индекс + 1. Таким образом после $arr[3] = 5; максимальный целочисленный индекс стал 3. При $arr[] = 6; максимальный индекс + 1 будет 4. Таким образом $arr[4] становится 6. <?PHP
$arr = Array('key3'=>'val3', 'Чипсы') ;// напомним индексы key3 и 0 $arr[] = 'Банан'; // Попробуйте сказать какой индекс будет у элемента Банан ?
$arr = Array('key3' => 'val3', 'tasty' => 'Чипсы') ; $arr[] = 'Банан'; // Попробуйте сказать какой индекс будет у элемента Банан теперь?
/* ОТВЕТ: в первом случае максимальный целочисленный индекс 0. 0+1 =1 значит индекс банана будет 1.
Во втором случае максимального целочисленного индекса нет вообще поэтому новый целочисленный индекс будет 0 . */
?>
Объекты ( Object ) Оглянитесь вокруг. Всё вокруг нас это объекты. Стул, бутылка, веревка, мыло, это всё объекты. У объектов есть свойства и функции. Объект - Машины. Свойство - Цвет. Значение - белый. Объект - Машины. Функция - бибикать. Действие - издаёт звук. <?PHP
// Определяем что такое машины, что она умеет делать и как. class car { var $color = 'White'; function tut_tut() { echo "BIp BIp"; } }
$honda = new car; // присваиваем переменной honda объект - Машину echo $honda->color; // Выводим свойство машины - цвет
?>
Ресурс ( Resource ) Ресурс представляет из себя указатель, ссылку, на внешний ресурс. Представим автосервис с большим количеством машин, которым заливают несколько по литров масла в двигатель. Со свистом тормозов из подворотни вылетает феррари и паркуется на очередной сервисной парковке. Хозяин сервиса уже кричит рабочему, залить 5 литров масла и тычет большим пальцем в красную феррари. Наш рабочий получает в данном случае два типа данных - число (литров масла) и указатель на машину, то-есть определение - какому именно объекту из всех вокруг нужно подлить чего-нибудь. Подмечу, что рабочий получает от босса вовсе не саму машину, а лишь дескриптор (указатель) машины с которой предстоит работать. В php этим дескриптором является тип данных resource. Null Чтобы понять что такое Null нужно понять как хранит php переменные в памяти. Компьютерная память состоит из большого количества маленьких ячеек. В эти ячейки и записываются твои данные. Обращение к той или иной ячейке происходит при помощи идентификатора ячейки в памяти, её места. На деле интерпретатор хранит связь между названием переменной и идентификатором ячейки в памяти. Мы же в свою очередь работаем с названием, вместо того чтобы самим запоминать идентификаторы ячеек, которые и без того, известны одному интерпретатору. Когда мы присваиваем переменной значение в первый раз, интерпретатор выбирает ячейку в памяти, заносит туда наше значение и привязывает название переменной к определенному идентификатору. Когда к названию переменной соответствует ячейка в памяти, переменная считается определенной. Пустая переменная означает что содержимое ячейки является числом ноль, строкой нулевой длины или вовсе отсутствует. Значение Null сбрасывает привязку названия переменной к ячейке в памяти и переменной больше не соответствует никакая ячейка. Переменная просто никуда не указывает и ни к чему не ведет. В этом случае переменная считается неопределенной, так как название есть а привязка к ячейке отсутствует. Присвоение переменной значения null можно делать так: $a = Null; Заметьте что слово null не взято в кавычки, потому что это не строка с текстом. Булев тип ( Boolean ) Тип данных который включает в себя всего два значения Правда и неправда. True и False. Используется в основном в условиях. к примеру выражение ($a > $b) может быть правдой или не правдой. Что это за странные типы данных которые я вижу в документации ? mixed - обозначает что функция возвращает разные типы данных, в зависимости от обстоятельств number - означает что возвращаемый результат представляет из себя integer или float callback - в php функция вызывается как её название и скобочки. К примеру print().
Некоторые функции в php (к примеру call_user_func() ) принимают в качестве параметров названия функций с которыми они будут работать. в таком случае параметр формата callback которые они требуют представляют из себя строку с названием функции без скобочек. К примеру call_user_func('increment', $a); Возможно данный аспект будет подробнее рассмотрен в разделе работы с функциями. Вопросы и задания на усвоение материала: 1. $a = '22'; Какого типа является сейчас переменная $a ? 2. $b = $a = 7; чему равно $b ? не забудьте что читается в лева на право. 3. $a = '46'; $b = '32'; Что больше, а или б ? 4. Какой тип переменной лучше всего подойдёт для хранения результата деления 2 на 4? 5. $a = 5; $b=2.5; Какого типа данных будет результат деления А на Б ? 6. Попробуйте присвоить переменной значение +214748364900000000000000. 7. Выясните сколько это 2B в шестнадцатеричной системе ? ( Присвойте переменной значение и выведите ). 8. Можно ли переменной присвоить переменную ? Если да - покажите как. Если нет, объясните почему нет. 9. $a='Вася'; $b = 'Петя'; Поменяйте местами значения переменных . 10. Создайте одномерный числовой массив с одним элементом. Добавьте туда еще один элемент. Добавьте туда третий элемент представляющий из себя ассоциативный массив с одним элементом. Добавьте в этот ассоц. массив еще один элемент. Замените первый элемент в родительском массиве на второй элемент из ассоц. массива. 11. Создайте переменную типа Resource Ответы на эти вопросы вы найдете здесь: здесь Шаманство над типами Как мы уже выяснили, переменные бывают разных типов и иногда нам нужно узнать какого типа переменная, поменять её тип чтоб сравнить с переменной другого типа или сделать с ней что нибудь полезное. Тип переменной по умолчанию выбирается автоматически при присваивании. Так же автоматически приводятся типы переменных при операциях с ними, если это необходимо. Так же как мы ранее заметили, при делении 5 на 2,5 результатам будет дробь, так как интерпретатор приводит обе переменных к одному типу и потом производит деление. Узнать какой тип у переменной можно при помощи функции gettype(); Функция это кучка действий. Она принимает аргументы, делает с ними некие операции и возвращает результат. К примеру Приготовить пиццу это функция принимающая параметры - тесто, яйца, сыр, кетчуп, анчоусы, плиту, и возвращает Пиццу. Возвращаемое значение у функций может быть любого типа данных. У функции getttype() возвращаемый результат это строка содержащие название типа. Если вы попробуете код echo gettype(512); то получите в ответ строку "Integer". Можно узнать является ли тем или иным типом данных переменная при помощи is_float(), is_int(), is_string(), is_object(), is_array(). Эти функции принимают один аргумент и возвращают булев тип (true или false). Изменить тип переменной можно несколькими функциями intval() - возвращает аргумент в виде целого числа integer floatval() - возвращает аргумент в виде дробного числа float strval() - возвращает аргумент в виде строки string settype() - превращает первый аргумент в указанный во втором аргументе тип settype($a,'integer') Превратит $a в целое число. Заметьте что эта функция не возвращает нового значения, а изменяет переданный ей параметр. Допустимыми значениями параметра type являются: * "boolean" * "integer" (или "int") * "float" * "string" * "array" * "object" * "null"
Операции с переменными Арифметические операторы -$a Отрицание Смена знака $a. $a + $b Сложение Сумма $a и $b. $a - $b Вычитание Разность $a и $b. $a * $b Умножение Произведение $a и $b. $a / $b Деление Частное от деления $a на $b. $a % $b Деление по модулю Целочисленный остаток от деления $a на $b. Операторы инкремента и декрменета ++$a Префиксный инкремент Увеличивает $a на и возвращает значение $a. $a++ Постфиксный инкремент Возвращает значение $a, а затем увеличивает $a на 1. --$a Префиксный декремент Уменьшает $a на 1 и возвращает значение $a. $a-- Постфиксный декремент Возвращает значение $a, а затем уменьшает $a на 1.
Таким образом $a = 5; echo $a++ ; Сначала выведет 5, а потом увеличит 5 на 1. Логические операторы $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. Строковые операторы В PHP есть два оператора для работы со строками. Первый - оператор конкатенации ('.'), который возвращает объединение левого и правого аргумента в одну строку. Второй - оператор присвоения вместе с конкатенацией. <?PHP
$a = "Hello "; $b = $a . "World!"; // $b содержит строку "Hello World!"
$a = "Hello "; $a .= "World!"; // $a содержит строку "Hello World!"
?>
Побитовые операторы Побитовые операторы позволяют устанавливать конкретные биты в 0 или 1 для целочисленных значений. В случае если и левый, и правый операнды строки, побитовые операции будут работать с их ASCII-представлениями. $a & $b Побитовое 'и' Устанавливаются только те биты, которые установлены и в $a, и в $b. $a | $b Побитовое 'или' Устанавливаются те биты, которые установлены либо в $a, либо в $b. $a ^ $b Исключающее'или' Устанавливаются только те биты, которые установлены либо только в $a, либо только в $b ~ $a Отрицание Устанавливаются те биты, которые в $a не установлены, и наоборот. $a << $b Сдвиг влево Все биты переменной $a сдвигаються на $b позиций влево (каждая позиция подразумевает 'умножение на 2') $a >> $b Сдвиг вправо Все биты переменной $a сдвигаються на $b позиций вправо (каждая позиция подразумевает 'деление на 2') Операторы сравнения $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 is меньше или равно $b. $a >= $b Больше или равно TRUE если $a больше или равно $b. Операторы работы с массивами $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.
|