46400

Массивы. Объекты. Ресурсы. Тип

Лекция

Информатика, кибернетика и программирование

Массив в PHP представляет собой упорядоченную карту – тип, который преобразует значения в ключи. Этот тип оптимизирован в нескольких направлениях, поэтому его можно использовать его как собственно массив, список (вектор), хеш-таблицу (являющуюся реализацией карты), стэк, очередь и т.д.

Русский

2013-11-21

65.5 KB

0 чел.

Лекція 9. Масиви. Об'єкти. Ресурси. Тип

План

1. Тип array (масив)

2. Визначення за допомогою синтаксису квадратних дужок

3. Тип object (об’екти)

4. Тип resource (ресурси)

5. Тип Null

Література:

  1.  Лаура Томсон, Люк Веллінг «Разработка Web-приложений на PHP и MySQL», розділ 3 (стор. 75-78)
  2.  Володимир Дронов «PHP, MySQL, DreamWeaver MX 2004. Разработка интерактивных Web-сайтов», розділ 7 (стор. 190)
  3.   Інтернет-ресурси:   
  4.  

Тип array (массив)

Массив в PHP представляет собой упорядоченную карту – тип, который преобразует значения в ключи. Этот тип оптимизирован в нескольких направлениях, поэтому его можно использовать его как собственно массив, список (вектор), хеш-таблицу (являющуюся реализацией карты), стэк, очередь и т.д. Поскольку вы можете иметь в качестве значения другой массив PHP, можно также легко эмулировать деревья.

Определить массив можно с помощью конструкции array() или непосредственно задавая значения его элементам.

Определение при помощи array()

array ([key] => value, [key1] => value1, ... )

Языковая конструкция array() принимает в качестве параметров пары ключ => значение, разделенные запятыми. Символ => устанавливает соответствие между значением и его ключом. Ключ может быть как целым числом, так и строкой, а значение может быть любого имеющегося в PHP типа. Числовой ключ массива часто называют индексом. Индексирование массива в PHP начинается с нуля. Значение элемента массива можно получить, указав после имени массива в квадратных скобках ключ искомого элемента. Если ключ массива представляет собой стандартную запись целого числа, то он рассматривается как число, в противном случае – как строка. Поэтому запись $a["1"] равносильна записи $a[1], так же как и $a["-1"] равносильно $a[-1].

<?php

$books = array ("php" => "PHP users guide",  12 => true);

echo $books["php"];

//выведет "PHP users guide"

echo $books[12];

//выведет 1

?>

Пример 2.9. Массивы в PHP

Если для элемента ключ не задан, то в качестве ключа берется максимальный числовой ключ, увеличенный на единицу. Если указать ключ, которому уже было присвоено какое-то значение, то оно будет перезаписано. Начиная с PHP 4.3.0, если максимальный ключ – отрицательное число, то следующим ключом массива будет ноль (0).

<?php

// массивы $arr и $arr1 эквиваленты

$arr = array(5 => 43, 32, 56, "b" => 12);

$arr1 = array(5 => 43, 6 => 32,  7 => 56,  "b" => 12);

?>

Пример 2.10. Массивы в PHP

Если использовать в качестве ключа TRUE или FALSE, то его значение переводится соответственно в единицу и ноль типа integer. Если использовать NULL, то вместо ключа получим пустую строку. Можно использовать и саму пустую строку в качестве ключа, при этом ее надо брать в кавычки. Так что это не то же самое, что использование пустых квадратных скобок. Нельзя использовать в качестве ключа массивы и объекты.

Определение с помощью синтаксиса квадратных скобок

Создать массив можно, просто записывая в него значения. Как мы уже говорили, значение элемента массива можно получить с помощью квадратных скобок, внутри которых нужно указать его ключ например, $book["php"]. Если указать новый ключ и новое значение например, $book["new_key"]="new_value", то в массив добавится новый элемент. Если мы не укажем ключ, а только присвоим значение $book[]="new_value", то новый элемент массива будет иметь числовой ключ, на единицу больший максимального существующего. Если массив, в который мы добавляем значения, еще не существует, то он будет создан. 

<?

$books["key"]= value; // добавили в массив $books значение

// value с ключом key

$books[] = value1; /* добавили в массив  значение value1 с

ключом 13, поскольку  максимальный ключ у  нас был 12 */

?>

Для того чтобы изменить конкретный элемент массива, нужно просто присвоить ему с его ключом новое значение. Изменить ключ элемента нельзя, можно только удалить элемент (пару ключ/значение) и добавить новуюДа. 

Чтобы удалить элемент массива, нужно использовать функцию unset(). 

<?php

$books = array ("php" =>  "PHP users guide",  12 => true);

$books[] =  "Book about Perl"; // добавили элемент с ключом (индексом)

// 13 это эквивалентно $books[13] = "Book about Perl";

$books["lisp"] =  123456; /* Это добавляет к массиву новый

элемент с ключом "lisp" и  значением 123456 */

unset($books[12]); // Это удаляет элемент c ключом 12 из массива

unset ($books); // удаляет массив полностью

?>

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

<?php

$arr =

array ("a","b","c"); /* Создаем массив  со значениями  "a", "b" и "c".

Поскольку ключи  не указаны, они  будут 0,1,2  соответственно */

print_r($arr); // выводим массив (и ключи,  и значения)

unset($arr[0]);

unset($arr[1]);

unset($arr[2]);

// удаляем из него все значения

print_r($arr); // выводим массив (и ключи,  и значения)

$arr[] = "aa"; // добавляем новый элемент в массив.

// Его индексом (ключом) будет 3, а не 0

print_r($arr);

$arr =  array_values($arr); // переиндексируем массив

$arr[] = "bb"; // ключом этого элемента будет 1

print_r($arr);

?>

Пример 2.11. Переиндексация массива

Результатом работы этого скрипта будет:

Array ( [0] => a [1] => b [2] => c )

Array ( )

Array ( [3] => aa )

Array ( [0] => aa [1] => bb )

Тип object (объекты)

Объекты – тип данных, пришедший из объектно-ориентированного программирования (ООП). Согласно принципам ООП, класс – это набор объектов, обладающих определенными свойствами и методами работы с ним, а объект соответственно – экземпляр класса. Например, программисты – это класс людей, которые пишут программы, изучают компьютерную литературу и, кроме того, как все люди, имеют имя и фамилию. Теперь, если взять одного конкретного программиста, Васю Иванова, то можно сказать, что он является объектом класса программистов, обладает теми же свойствами, что и другие программисты, тоже имеет имя, пишет программы и т.п.

В PHP для доступа к методам объекта используется оператор ->. Для инициализации объекта используется выражение new, создающее в переменной экземпляр объекта.

<?php

//создаем класс людей

class Person

{

// метод, который обучает человека PHP

function know_php()

{

echo "Теперь я знаю PHP";

}

}

$bob = new Person; // создаем объект

// класса человек

$bob -> know_php(); // обучаем его PHP

?>

Пример 2.12. Объекты в PHP

Более подробно реализацию принципов ООП в языке PHP мы рассмотрим в одной из следующих лекций.

Тип resource (ресурсы)

Ресурс – это специальная переменная, содержащая ссылку на внешний ресурс (например, соединение с базой данных). Ресурсы создаются и используются специальными функциями (например, mysql_connect(), pdf_new() и т.п.).

Тип Null

Специальное значение NULL говорит о том, что переменная не имеет значения.

Переменная считается NULL, если:

  •  ей была присвоена константа NULL ($var = NULL);
  •  ей еще не было присвоено какое-либо значение;
  •  она была удалена с помощью unset().

Существует только одно значение типа NULL – регистронезависимое ключевое слово NULL.

Решение задачи

Теперь вернемся к задаче, которую мы поставили в самом начале лекции. Напомним, что она состояла в составлении письма разным людям по поводу разных событий. Попытаемся использовать для решения этой задачи изученные средства – переменные, операторы, константы, строки и массивы. В зависимости от получателя изменяется событие и обращение, указанные в письме, поэтому естественно вынести эти величины в переменные. Более того, поскольку событий и людей много, удобно использовать переменные типа массив. Подпись в письме остается постоянной всегда, поэтому логично задать ее как константу. Чтобы не писать слишком длинные и громоздкие строки, используем оператор конкатенации. Итак, вот что получилось:

<?

// пусть наша подпись будет константой

define("SIGN","С уважением, Вася");

// зададим массивы людей и событий

$names = array("Иван Иванович",  "Петр Петрович",  "Семен Семенович");

$events = array(

"f" => "день открытых дверей",

"o" => "открытие выставки",

"p" => "бал выпускников");

// составим текст приглашения

$str = "Уважаемый (ая), $names[0]";

$str .= "<br>Приглашаем Вас на ". $events["f"];

$str .= "<br>" . SIGN;

echo $str; // выведем текст на экран

?>

Заключение

Итак, в этой лекции мы познакомились с основами синтаксиса языка PHP, научились работать с переменными различных типов, константами, операторами, познакомились со всеми существующими в PHP типами данных. Говоря о таких типах данных, как строки и массивы, мы разобрали только самые основы. Эти конструкции настолько удобны и просты в использовании, что заслуживают отдельного разговора. Подробности будут изложены в последующих лекциях. Решая задачу, мы старались использовать только имеющиеся знания и не забегать вперед, поэтому решение не слишком подходит для практического применения.

Контрольні питання

  1.  Що собою представляє масив у PHP?. Як визначається масив в PHP?
  2.  Поясніть запис:

<?php

$books = array ("php" => "PHP users guide",  12 => true);

echo $books["php"];

echo $books[12];

?>

  1.  Чи рівнозначні наведені вирази і чому?
    •  $arr = array(5 => 43, 32, 56, "b" => 12);
    •  $arr1 = array(5 => 43, 6 => 32,  7 => 56,  "b" => 12);

  1.  Прокоментуйте запис.     

<?php

$books = array ("php" =>  "PHP users guide",  12 => true);

$books[] =  "Book about Perl";

$books["lisp"] =  123456;

unset($books[12]);

unset ($books);

?>

  1.  Що буде результатом наведеного прикладу :

<?php

$arr = array ("a","b","c");

print_r($arr);

unset($arr[0]);

unset($arr[1]);

unset($arr[2]);

print_r($arr);

$arr[] = "aa";

print_r($arr);

$arr =  array_values($arr);

$arr[] = "bb";

print_r($arr);

?>

  1.  Дайте визначення типу «об’єкт». Який оператор використовується для доступу до методів об’єкта?Як ініціалізувати об’єкт?

  1.  Які дії виконує приведений код РНР?  

<?php

class Person

{

function know_php()

{

 echo "Теперь я знаю PHP";

}

}

$bob = new Person;

$bob -> know_php();

?>

 

  1.  Яка змінна має тип resource? Як створити змінну типу resource?


 

А также другие работы, которые могут Вас заинтересовать

71701. Технология помехоустойчивого кодирования 64.71 KB
  При передаче информации в пространстве или во времени имеет место где вектор ошибки знак обозначает суммирование по модулю 2. 3 Вектор в 3 называемый синдромом будет равен вектору нуль только в двух случаях: либо ошибки нет либо имеет место так называемая необнаруживаемая ошибка.
71702. Модуляция гармонических колебаний 540.84 KB
  Под модуляцией понимают процесс изменения одного или нескольких параметров физического процесса по закону передаваемого сообщения. Так, например, если моделью физического процесса является функция f(a, b, c, d, t), то параметры a, b, c, d можно использовать для осуществления модуляции.
71703. ПРОЦЕССЫ 503.52 KB
  В головном процессе создаются/открываются два файла: текстовый (несколько строк) и двоичный (ряд арифметических данных). Информация об открытых файлах (дескрипторы) передается в дочерние процессы на этапе их создания через командную строку.
71704. Решение задачи классификация и регрессии с помощью деревьев решений 136.54 KB
  Цель работы: изучение алгоритмов построения деревьев решений; создание и исследование классификационных и регрессионных моделей с помощью деревьев решений Индивидуальное задание: seeds Data Set Attribute Information: To construct the data, seven geometric parameters of wheat...
71706. Модуляция 602 KB
  Определить зависимость качества модуляции сигнала от уровня шума. Исходные данные На рисунке 1 представлена Sмодель: Модуляция гармонических колебаний которая позволяет изменять тип модуляции ее параметры например частоту а также параметры канала связи...
71707. Доступ к базам данных из программ на языке Java 378 KB
  Операции с данными в SQL Операции с данными позволяют получить значения одно нескольких или всех полей базы данных а также добавлять или удалять записи строки из таблицы либо изменять значения полей таблицы.
71708. Редактирование новости 50.5 KB
  Состоялся благотворительный аукцион в пользу Анисимовского детского дома Около 150 тысяч рублей которые удалось выручить организаторам аукциона администрация Анисимовского детского дома Детский дом Анисимовский МОУ Детский дом для детей оставшихся без попечения родителей...