Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование с нуля - это совсем просто! 102) PHP: Массивы


Школа программирования

102) Массивы

Продолжение рубрики по программированию на PHP. Последний выпуск - см. N 98.

Массивы в PHP реализованы очень гибко, во многом благодаря тому, что на серверной стороне PHP-сценарии выполняются интерпретирующей системой. Создание переменной-массива выполняется обычно в операторе присваивания. Для этого используется ключевое слово array.

Например, если мы хотим определить в программе переменную MyArr как массив, ее надо предварительно до использования инициализировать так:

  $MyArr = array();

В результате переменная MyArr становится массивом из нуля элементов.

Размеры любого массива в PHP могут меняться динамически. Фактически PHP-массивы представляют собой структуры из пар "ключ - значение", где в качестве ключа может выступать как целое число, так и, например, строка.

То есть можно записать:

  $MyArr[1] = 12;

В квадратных скобках записывается ключ (в нашем случае - число 1), которое связывается с значением 12. Вместо численного ключа можно использовать строку:

  $MyArr[ "мой ключ" ] = "от дома";
  $MyArr[ "чужой ключ" ] = "от сейфа";

В результате переменная MyArr будет хранить две пары "ключ-значение":

  "мой ключ" => "от дома"

и

  "чужой ключ" => "от сейфа"

Знакомые с Си могут воспользоваться привычной формой записи:

  $MyArr[ 1 ] = "от дома";
  $MyArr[ 2 ] = "от сейфа";

  1 => "от дома"

и

  2 => "от сейфа"

Исходные пары ключей и значений можно также указывать в момент создания массива, для этого каждая пара разделяется запятыми, а связка ключа и значения выполняется с помощью двух символов "=>" :

  $MyArr = array( "мой ключ" => "от дома" , "чужой ключ" => "от сейфа"
  );

Удаление некоторой пары из массива выполняется функцией unset(), в качестве параметров которой задается конкретный элемент массива:

  unset( $MyArr[ "мой ключ" ] );

  В результате в $MyArr останется только пара "чужой ключ" => "от
  сейфа".

Важно! Программисты, знакомые с Си, часто делают в этом месте ошибку. Если массив создан так:

  $MyArr = array( 1 => "от дома" , 2 => "от сейфа" );

то после выполнения команды

  unset( $MyArr[ 1 ] );

останется только элемент

  $MyArr[ 2 ], а элемент $MyArr[ 1 ] перестанет существовать. Дело в том, что задаваемые в квадратных скобках значения ключей - это не индексы, не номера элементов, как в Си, а условные ключи, поэтому после удаления элементов изменения значений других ключей не происходит. Если ключ не указан, то считается, что он равен нулю:

  $MyArr = array();
  $MyArr[] = 5;

  В переменной $MyArr хранится пара значений 0 => 5. При следующем
  обращении к $MyArr без ключа

  $MyArr[] = 500;

  новый ключ, созданный по умолчанию, будет больше максимального
  целого ключа на единицу: 1 => 500. Поэтому запись

  $MyArr = array( "от дома" , "от сейфа" );

  без указания ключей создаст пары 0 => "от дома" , 1 => "от сейфа".
  При желании можно задать только один начальный ключ:

  $MyArr = array( 1 => "от дома" , "от сейфа" );

  тогда пары будут такими:

  1 => "от дома" , 2 => "от сейфа"

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

Структуру данных в виде массива можно в качестве элемента включать в другой массив, формируя таким образом многомерные массивы. Для этого достаточно в соответствующих местах использовать ключевое слово array:

  $a2 = array(

  array(1,2),

  array(3,4)

  );

Обращаться к нему можно так:

  $a2[0][1] = 0;

Переменная $a2 представляет собой двумерный массив (матрицу) размером 2x2 элемента. PHP-массив не накладывает каких-либо ограничений на размеры по любому измерению, да и понятие многомерного массива в PHP существенно разнится от общепринятого в Си. Благодаря тому, что каждый элемент массива в свою очередь может быть массивом (а может и не быть!), программисту доступны возможности создания сколь угодно причудливых структур данных - стеков, коллекций, словарей, рекурсивных списков и т. д.

Полезные функции обработки массивов

Функция

print_r( переменная-массив )

выводит (формирует html-код) содержимое массива:

  print_r( $a2 );

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

  <pre>

Чтобы определить, является ли некоторая переменная массивом или скалярным значением, надо воспользоваться функцией is_array(имя-переменной), которая возвращает true, если переменная - массив.

Количество элементов в массиве выявляется функцией count(имя-переменной).

Большое число функций обработки массивов входит в стандартную библиотеку помощи PHP (раздел Array Functions).

Задание.
Создайте треугольный массив размером 10 элементов (двумерный массив, в первой строке которого 1 элемент, во второй - 2, ... , в 10-й - 10 элементов). Заполните его случайными значениями (воспользуйтесь для этого функцией rand(min,max), которая выдает случайное число в диапазоне от min до max).
Выведите содержимое массива на экран (в браузер клиента) в удобном для человека виде, не пользуясь функцией print_r (напишите схожий с ней аналог самостоятельно).


(c) 2004-2006 Сергей Бобровский bobrovsky@russianenterprisesolutions.com

Школа программирования с нуля
Все предыдущие выпуски базового курса всегда тут:
http://www.infiltration.ru/p/

Дизайн рассылки: Алексей Голубев - Web-дизайн и web-программирование


В избранное