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?


 

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

78334. Теории химической кинетики. Теория активных столкновений (ТАС) 230 KB
  Тогда доля активных столкновений составит: Рассмотрим бимолекулярную газовую реакцию типа: 2А где Р – продукты реакции. Поэтому количество прореагировавших молекул в единице объема будет равна удвоенному количеству активных столкновений в то же время и в том же объеме: или Отсюда видно что скорость реакции зависит от квадрата концентрации. Тогда уравнение Аррениуса с точки зрения ТАС запишется следующим образом...
78335. КИНЕТИКА РЕАКЦИЙ В РАСТВОРАХ 293 KB
  Таким образом, по ТАС скорость реакции зависит от свойств растворителя в том случае, если скорость определяющей является 1 стадия, т. е. стадия подвода молекул друг к другу.
78336. ФОТОХИМИЧЕКИЕ РЕАКЦИИ 302 KB
  Фотохимическими называются реакции протекающие под действием света а также невидимых лучей близких по длине волны к видимому свету. Несмотря на это во всех случаях можно выделить первичные процессы непосредственно вызываемые действием света и вторичные реакции не требующие освещения для своего протекания и поэтому называемые темновыми. Фотохимические реакции первичные вторичные световые темновые Типы фотохимических реакций.
78337. АДСОРБЦИЯ. ОСОБЕННОСТИ АДСОРБЦИИ НА ТВЕРДОМ КАТАЛИЗАТОРЕ 131.84 KB
  Адсорбция — это самопроизвольное концентрирования вещества на поверхности раздела фаз. Вещество, на котором происходит адсорбция, называется адсорбентом. Вещество, которое адсорбируется, называется адсорбатом или адсорбтивом.
78338. Строение атома. Квантовые числа 357.98 KB
  Положительный заряд атома равномерно распределен по всему объему шара, а отрицательно заряженные электроны находятся внутри него. Для объяснения линейчатых спектров испускания атомов Томсон пытался определить расположение электронов в атоме и рассчитать частоты их колебаний около положений равновеси
78339. Периодический закон 35.06 KB
  Опирающаяся на периодический закон классификация химических элементов которую Менделеев выразил в форме периодической системы сыграла очень важную роль в изучении свойств химических элементов и дальнейшем развитии учения о строении вещества. В отличие от своих предшественников Менделеев был глубоко убежден что между всеми химическими элементами должна существовать закономерная связь объединяющая их в единое целое и пришел к заключению что в основу систематики элементов должна Эта замечательная закономерность получила свое выражение в...
78340. Теория химического строения 94.09 KB
  При взаимодействии атомов между ними может возникать химическая связь, приводящая к образованию устойчивой многоатомной системы — молекулы, молекулярного нона, кристалла. Чем прочнее химическая связь, тем больше энергии нужно затратить для ее разрыва; поэтому энергия разрыва связи служит мерой ее прочности.
78342. Термохимия. Превращение энергии при химических реакциях 69.35 KB
  Химические реакции протекают с выделением или с поглощением энергии. Наоборот такие реакции как разложение карбоната кальция образование оксида азота II из азота и кислорода требуют для своего протекания непрерывного притока теплоты извне и тотчас же приостанавливаются если нагревание прекращается. Ясно что эти реакции протекают с поглощением теплоты. Выделение теплоты при взаимодействии различных веществ за ставляет признать что эти вещества еще до реакции в скрытой форме обладали определенной энергией.