
- •Лабораторная работа №4
- •4.4. Теоретические сведения
- •Общие сведения о языке php
- •Работа в редакторе Zend Studio
- •4.4.3. Переменные и типы данных php
- •4.4.3.1.Переменные
- •4.4.3.2.Глобальные переменные
- •4.4.3.3.Статические переменные
- •4.4.3.4.Константы
- •4.4.3.5.Типы данных
- •4.4.3.6.Преобразование типов
- •4.4.4.Массивы
- •4.4.5. Операторы
- •4.4.5.1. Математические операторы
- •4.4.5.2. Операторы присваивания
- •4.4.5.3. Строковые операторы
- •4.4.5.4. Операторы инкремента и декремента
- •4.4.5.5. Логические операторы
- •4.4.5.6. Операторы равенства
- •4.4.5.7. Операторы сравнения
- •4.4.6. Конструкции языка
- •4.4.6.1. Проверка условий
- •4.4.6.2. Цикл с предусловием While
- •4.4.6.3. Цикл с постусловием do-while
- •4.4.6.4. Цикл For
- •4.4.6.5. Инструкции break и continue
- •4.4.6.7. Конструкция switch-case
- •4.4.7. Функции
- •4.4.7.1. Определение и вызов функций
- •4.4.7.2. Возврат значения из функции
- •4.4.7.3. Рекурсивные функции
- •4.4.7.4. Функции-переменные
- •4.4.8. Файловый ввод/вывод и файловая система
- •4.4.8.1. Проверка существования и размера файла
- •4.4.8.2. Открытие и закрытие файлов
- •4.4.8.3.Запись в файл
- •4.4.8.4. Чтение из файла
- •4.5. Пример разработки программы на php
- •4.6. Указания по организации самостоятельной работы студентов
- •4.7. Контрольные вопросы
4.4.3.6.Преобразование типов
Явное приведение переменной к типу, отличному от того, который изначально предназначался для нее, называется преобразованием (casting) типа. Изменение типа может быть как временным, одноразовым, так и постоянным.
Чтобы временно привести переменную к другому типу, достаточно воспользоваться оператором преобразования типа — указать нужный тип перед именем переменной в круглых скобках (табл. 2).
Таблица 2
Операторы преобразования типа переменных
Оператор преобразования типа |
Новый тип |
||
(int) или (integer) |
Целое число |
|
|
(real), (double) или (float) |
Вещественное число |
|
|
(string) |
Строка |
|
|
(array) |
Массив |
|
|
(object) |
Объект |
|
Простой пример преобразования типов:
$variable1= 13; // $variable1 присваивается целое число 13
$variable2 = (double) $variable1; // $variable2 присваивается 13.0
Хотя переменная $variable1 первоначально содержала целое число 13, преобразование (double) преобразует ее к вещественному типу (поэтому число 13 превращается в 13.0). Полученное значение присваивается переменной $variable2.
Из предыдущего раздела вы знаете, что при суммировании целого числа с вещественным получается вещественный результат. Однако тип результата можно изменить посредством явного преобразования типа:
$variablel = 4.0;
$variable2 = 5;
$variable3 = (int) $variable1 + $variable2; // $variable3 = 9
Следует заметить, что преобразование вещественного типа к целому всегда сопровождается округлением:
$variablel = 14.7:
$variable2 = (int) $varlable1; // $variable2 = 14:
Строку или переменную другого типа также можно преобразовать в элемент массива. В этом случае преобразованная переменная становится первым элементом массива:
$variable1 = 1114;
$array1 = (array) $varable1;
echo $array1[0]; // Выводится значение 1114
Наконец, любой тип данных можно преобразовать в объект. Переменная становится атрибутом объекта, и ей присваивается имя scalar:
$model = "Toyota";
$new_obj = (object) $model;
Ссылка на исходное строковое значение выглядит так:
echo $new_obj->scalar;
4.4.4.Массивы
Массив представляет собой список однотипных элементов. Существует два типа массивов, различающиеся по способу идентификации элементов. В массивах первого типа элемент определяется индексом в последовательности. Массивы второго типа имеют ассоциативную природу, и для обращения к элементам используются ключи, логически связанные со значениями. Впрочем, на практике операции с массивами обоих типов выполняются сходным образом. По размерности массивы делятся на одномерные и многомерные.
Одномерные индексируемые массивы
При обращении к элементам одномерных индексируемых массивов используется целочисленный индекс, определяющий позицию заданного элемента.
Обобщенный синтаксис элементов одномерного массива:
$имя[индекс1];
Одномерные массивы создаются следующим образом:
$meat[0] = "chicken";
$meat[l] = "steak";
$meat[2] = "turkey";
При выполнении следующей команды:
echo $meat[1]:
в браузере выводится строка
steak
При создании массивов также можно воспользоваться функцией array (). Массив $meat из предыдущего примера создается командой
$meat = аrrау("chicken", "steak", "turkey");
Приведенная выше команда pri nt приводит к тому же результату — выводу строки steak.
Чтобы включить новый элемент в конец массива, можно просто присвоить значение переменной массива без указания индекса. Следовательно, массив $meat можно создать еще одним способом:
Smeat[] = "chicken";
$meat[] = "steak";
Smeat[] = "turkey";
Одномерные ассоциативные массивы
Ассоциативные массивы особенно удобны в ситуациях, когда элементы массива удобнее связывать со словами, а не с числами.
Предположим, вы хотите сохранить в массиве лучшие сочетания вин и блюд. Проще всего было бы хранить в массиве пары «ключ/значение» — например, присвоить сорт вина названию блюда. Самым разумным решением будет использование ассоциативного массива:
Spairings["zinfandel"] = "Broiled Veal Chops";
$pairings["merlot"] = "Baked Ham";
$pairings["sauvignon"] = "Prime Rib";
$pairings["sauternes"] = "Roasted Salmon";
Ассоциативный массив заметно экономит время и объем программного кода, необходимого для вывода определенных элементов массива. Допустим, вы хотите узнать, с каким блюдом лучше всего идет «Мерло». Нужная информация выводится простой ссылкой на элемент массива $pairings: echo $pairings["merlot"]; // Выводится строка "Baked Ham" Ассоциативные массивы также можно создавать функцией РНР аггау():
Spairings = аrrау(
zinfandel => "Broiled Veal Chops",
merlot => "Baked Ham",
sauvignon => "Prime Rib",
sauternes => "Roasted Salmon");
Отличается только способ создания массива pairings, а функциональные возможности остаются без изменений.
Многомерные индексируемые массивы
Многомерные индексируемые массивы работают практически так же, как и их одномерные прототипы, однако элементы в них определяются несколькими индексами вместо одного. Теоретически размерность индексируемого массива не ограничивается, хотя в большинстве приложений практически не встречаются массивы с размерностью выше 3.
Обобщенный синтаксис элементов многомерного массива:
$имя[индекс1][индекс2]..[индексN];
Пример ссылки на элемент двухмерного индексируемого массива:
$position = $chess_board[5][4];
Многомерные ассоциативные массивы
Многомерные ассоциативные массивы также существуют в РНР (и приносят определенную пользу). Допустим, в массиве $раirings из предыдущего примера должна храниться информация не только о сорте, но и о производителе вина. Это можно сделать следующим образом:
$pairings["Martinelli"]["zinfandel"] = "Broiled Veal Chops";
$pairings["Beringer"]["merlot"] = "Baked Ham";
$pairings["Jarvis"]["sauvignon"] = "Prime Rib";
$pairings["Climens"]["sauternes"] = "Roasted Salmon";
Смешанное индексирование
В многомерных массивах допускается смешанное индексирование (числовое и ассоциативное). Допустим, вы хотите расширить модель одномерного ассоциативного массива для хранения информации об игроках первого и второго состава футбольной команды. Решение может выглядеть следующим образом:
$Buckeyes["quarterback"] [1] = "Bellisari";
$Buckeyes["quarterback"] [2] = "Moherman":
$Buckeyes["quarterback"] [3] = "Wiley";
Далее приведен пример инициализации массива и вывода значений массива с соответствующем индексом. Такой вывод осуществляется функцией print_r ().
<?
$firstquarter = array(1 => 'Январь', 'Февраль', 'Март', 'Апрель', 'Май' );
print_r($firstquarter);
?>
Рис. 10. Результат работы программы с массивом