Использование массивов в PHP

PHP

Массивы как в PHP, так и других языках представляют собой структурную организацию хранения множества значений в одной переменной. То есть — однако переменная хранит множество отдельных значений разных типов. Но как осуществить доступ к тому или иному значению, когда у переменной одно имя? Для этого массив снабжен индексами, которые и являются ссылкой на определенное значение.

Структура массива и его создание

Чтобы понять, что такое массив, необходимо представить ящик с ячейками. У ящика есть имя, к примеру «box». В ящике есть определенное количество ячеек, в которые можно положить документы. Количество ячеек является длиной массива. Каждая ячейка обладает своим числовым индексом. Ячейки расположены по порядку с лева на право и первая ячейка обладает нулевым индексом, то есть — отсчет начинается с нуля. Представив ящик с вертикальными ячейками, теперь необходимо понять, как это выглядит на языке PHP.

Простое объявление массива:

<?php
$box;
$box[0] = «first»;
$box[1] = «second»;
$box[2] = «third»;
$box[3] = «fourth»;

echo «$box»; // first, second, third, fourth
echo «$box[2]»; // third
echo «$box[0].’, ‘.$box[3]»; // first, fourth
?>

Как видно из примера выше, для массива используется одно имя переменной $box, что соответствует названию нашего ящика. Индекс в квадратных скобках [] указывает номер ячейки, а на экран выводится то значение, которое находится в ячейке с указанным индексом. Однако данный вариант объявления и инициализации массива не единственный. Рассмотрим еще примеры создания массива.

Инициализация без указания индекса:

<?php
$box;
$box[] = «first»;
$box[] = «second»;
$box[] = «third»;
$box[] = «fourth»;

echo «$box»; // first, second, third, fourth
echo «$box[2]»; // third
?>

В данном случае интерпретатор автоматически назначает числовые индексы массиву. Самое первое присвоение инициализирует нулевой индекс, последующие присвоения будут инициализировать индексы в порядке очереди. Если массиву не присваивать индексов, то интерпретатор автоматически создаст числовые индексы.

Создание массива посредством функции array()

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

$arr = array(«a», «b») — то же, что и $arr[0] = «a»; $arr[1] = «b».

Пример:

$books = array(«Hary Potter», «Sherlock Holmes», «Happy Tales»); // Инициализациямассиваоператором array()

echo «$books[1]»; \\ Sherlock Holmes
echo «count($books)»; \\ 3

\\ Всегда можно увеличить количество элементов в массиве при такой инициализации
$books[4] = «War and peace»;
$books[5] = «History of Europe»;

echo «$books»; \\ Hary Potter, Sherlock Holmes, Happy Tales, War and Peace, History of Europe
echo «count($books)»; \\ 5

Ассоциативный массив

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

Сравним числовой и ассоциативный массив, чтобы увидеть разницу:

  • $books[5] — в данном элементе у нас лежит строковое название книги «HistoryofEurope»
  • $books[«history»] — в ассоциативном массиве индексы имеют имена.

Объявление ассоциативного массива на примере предыдущего $books:

1. Простое объявление:

$books[«phantasy»] = «Harry Potter»;
$books[«detective»] = «Sherlock Holmes»;
$books[«for_children»] = «Happy Tales»;
$books[«classiks»] = «War and Peace»;
$books[«education»] = «History of Europe»;

2. Теперь объявим данный массив через функцию array():

$books = array(«phantasy»=>»Harry Potter», «detective»=>»Sherlock Holmes», «for_children»=>»Happy Tales», «classiks»=>»War and Peace», «education»=>»History of Europe» );

echo «$books[‘phantasy’]»; // HarryPotter

Как видно знаком присвоения в данной конструкции выступает оператор «=>». Конечно же массив можно расширять добавлением новых элементов. Однако у ассоциативного массива индекс всегда строковой, но при обращении всегда можно использовать строковую переменную вместо конкретного индекса.

$index = «education»;
echo «$books[$index]»; \\ History of Europe

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

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

Пример инициализации многомерного массива:

// первый способ инициализации двухмерного массива
$arr[0] = array(«a», «b», «c»);
$arr[1] = array(«d», «e», «f»);
$arr[2] = array(«g», «h», «x»);

// второй способ создания числового двухмерного массива
$arr = array(array(«a», «b», «c»), array(«d», «e», «f»), array(«g», «h», «x»));

// Инициализацияассоциативногомассива

$arr_asociativ = («first» => array(«a», «b», «c»), «second» => array(«d», «e», «f»), «third» => array(«g», «h», «x»))

// Вывод значения элементов
echo «$arr[0][0]»; // a
echo «$arr[0]»; // a, b, c
echo «$arr[1][2]»; // f

// Вывод значений ассоциативного двухмерного массива
echo «$arr_asociativ[‘second’][1]»; // e
echo «$arr_asociativ[‘third’]»; // g, h, x

Перебор массивов в циклах

Перебор массива — это получение или изменение всех, или нескольких его элементов в цикле. Для этого в основном используют циклы for и foreach

Перебор массива в for:

$box = array(50, 30, 44, «splash»);
for($i = 0; i<=count($box); i++){
$add = $box[$i] + 20; // Прибавляем к каждому значению элемента 20 и сохраняем в переменную
echo «$add»; // Выводим значение переменной каждой итерации.
}

// Вывод: 70, 50, 44, 20

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

Массив — это структура хранения данных

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

Удаление элементов с помощью простых операторов не уменьшит длину массива:

$arr = array(«a», «b», «c»);
$arr[1] = null; // удаляем значение второго элемента

echo «$arr»; // a, b — вывело два элемента
echo «count($arr)»; // 3 — по прежнему 3 элемента в массиве даже после удаления.

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

Рассмотрим примеры некоторых функций:

  • arr_map(«f», $arr) — выполняет функцию «f» для каждого элемента массива $arr;
  • array_merge($arr1, $arr…) — объединяет несколько массивов в один;
  • array_pop() — удаляет последнюю ячейку и ее значение, длина массива уменьшается на 1;
  • array_push() — вставляет один или несколько ячеек в конец массива;
  • array_shift() — удаляет первую ячейку массива;
  • array_slice(from, to) — выбирает количество значений элементов из массива в диапазоне fromto и возвращает эти значения в виде нового массива.

Где применяются массивы?

Массивы являются хранилищем для связанных объектов. К примеру — фамилии школьников 1-Б класса или номера домов на определенной улице. В PHP предусмотрен огромный набор функций, которые позволяют манипулировать с ячейками массива.

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

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

Оцените статью
Образовательный портал WELCOME4U.RU
Добавить комментарий

Adblock
detector