В PHP массив — настолько часто используемая структура, что вам придётся встречаться с ней очень и очень часто. Для быстрой и успешной работы необходимо понимать, как работают массивы и какие при этом используются приёмы.
В программировании термин «массив» означает набор элементов данных одного типа, причём доступ к элементам осуществляется по номеру элемента.
Переменная, представляющая массив в PHP, может служить как обычным массивом с цифровыми индексами, они носят название «Простые массивы», так и отображением (stroki), то есть, массивом со строковыми индексами. Такие массивы называются ассоциативными.
Ассоциативный массив — это объект, задающий набор «ключей» и соответствующих им «значений». Массив можно представить в виде таблицы из двух колонок, в которой одна колонка является «ключом», а другая колонка — «значением»:
В программировании термин «массив» означает набор элементов данных одного типа, причём доступ к элементам осуществляется по номеру элемента.
Переменная, представляющая массив в PHP, может служить как обычным массивом с цифровыми индексами, они носят название «Простые массивы», так и отображением (stroki), то есть, массивом со строковыми индексами. Такие массивы называются ассоциативными.
Ассоциативный массив — это объект, задающий набор «ключей» и соответствующих им «значений». Массив можно представить в виде таблицы из двух колонок, в которой одна колонка является «ключом», а другая колонка — «значением»:

Массив может быть создан языковой конструкцией array(). В качестве параметров она принимает любое количество разделенных запятыми пар key => value (ключ => значение).
array(
key => value,
key2 => value2,
key3 => value3,
...
)
Многомерный массив:
Многомерный массив (массив массивов) предоставляет в распоряжение программиста более эффективные средства для хранения информации, требующей дополнительного структурирования. Создать многомерный массив несложно, просто добавьте дополнительную пару квадратных скобок, чтобы вывести массив в новое измерение:
$chessboard [1] [4] = "King"; // Двухмерный массив
$capitals["USA"] ["Ohio"] = "Columbus": // Двухмерный массив
$streets["USA"]["Ohio"]["Columbus"] = "Harrison"; // Трехмерный массив
Перебор элементов массива:
Число элементов в массиве не обязательно знать заранее — его можно вычислить при помощи функции count()
<?php
for ($i = 1; $i <= count($arr); $i++)
{
echo $arr[$i]." ";
}
?>
Для вывода всех элементов массива на экран мы можем использовать функцию print_r, которая выведет все элементы массива вместе с их индексами.
<?php
$arr[0] = "PHP";
$arr[1] = "HTML";
$arr[2] = "CSS";
print_r($arr);
?>
Отображение в браузере:
Array ( [0] => PHP [1] => HTML [2] => CSS )
Также в PHP присутствует специальный цикл для обработки массивов - цикл foreach. Он представлен для упрощения работы с массивами.
Синтаксис:
Синтаксис:
foreach (array as $value) statement
foreach (array as $key => $value) statement
Пример:
<?php
$arr[0] = "PHP";
$arr[1] = "HTML";
$arr[2] = "CSS";
foreach($arr as $value)
{
echo $value, "<br>";
}
?>
Функция file(), которая читает файл и возвращает его содержимое в виде массива. Каждый элемент массива соответствует одной строке.
<?php
$arr = file("text.txt");
for($i = 0; $i < count($arr); $i++)
{
echo $arr[$i]."<br />";
}
?>
Функция explode(), позволяет разбить строку на несколько фрагментов, каждый из которых помещается в отдельный элемент массива:
<?php
$str = "654|mail@mail.ru|http://www.it-black.ru|login|password";
$arr = explode("|",$str);
for($i = 0; $i < count($arr); $i++)
{
echo $arr[$i]."<br />";
}
?>
Выведит:
654
mail@mail.ru
https://www.it-black.ru
login
password
Существует и обратная функция — implode(), которая объединяет, элементы массива в строку, используя для этого заданный разделитель:
<?php
$arr[] = "654";
$arr[] = "mail@mail.ru";
$arr[] = "https://www.it-black.ru";
$arr[] = "login";
$arr[] = "password";
$str = implode("##",$arr);
echo $str; //654##mail@mail.ru##http://www.it-black.ru##login##password
?>
Уничтожить весь массив сразу можно с помощью функции unset().
<?php
$arr = array(9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
unset($arr);
if(isset($arr)) echo "Массив определён";
else echo "Массив не определён";
?>
Суперглобальные массивы:
Эти массивы содержат всю информацию о состоянии сервера и среды выполнения скрипта. Массивы доступны в любом месте скрипта без дополнительных объявлений, т.е. не надо использовать ключевое слово global.
- $GLOBALS - содержит все глобальные переменные программы.
- $_GET, $_POST - содержат параметры запроса GET, POST.
- В эти массивы помещаются данные, передаваемые скрипту извне (так называемый, пользовательский ввод). Пользователь может влиять только на эти два массива плюс массив файлов и cookie. И именно поэтому все элементы этих массивов должны тщательно проверяться на допустимые значения.
- $_SESSION - содержит содержимое сессии текущего пользователя.
- $_COOKIE - содержит набор Cookie, переданных с запросом HTTP.
- В массив $_COOKIES автоматически помещаются все cookies, которые получены от браузера. Это массив, из которого в любое время можно узнать какие cookies установлены на стороне клиента.
- Массив $_REQUEST объединяет три массива: $_POST, $_GET, $_COOKIES. Пользоваться массивом $_REQUEST очень удобно в случаях, когда нет разницы, каким методом был сделан запрос.
- $_FILES - содержит описание файлов, загруженных по HTTP POST, закодированному как multipart/form-data.
- $_SERVER - содержат соответственно данные, переданные веб-сервером (заголовки HTTP, информация о сервере, информация об удалённом клиенте, путь к файлу скрипта).
- С помощью этого массива можно узнать практически всё о сервере, на котором исполняется скрипт. Например:
<?php
echo 'параметры сервера:' . "<br />\n";
echo "Операционная система: " .
$_SERVER["OS"] . "<br />\n";
echo "Web-сервер: " .
$_SERVER["SERVER_SOFTWARE"] . "<br />\n";
echo "Имя сервера: " .
$_SERVER["SERVER_NAME"] . "<br />\n";
echo "Адрес сервера: " .
$_SERVER["SERVER_ADDR"] . "<br />\n";
echo "Порт сервера: " .
$_SERVER["SERVER_PORT"] . "<br />\n";
echo "Адрес клиента: " .
$_SERVER["REMOTE_ADDR"] . "<br />\n";
echo "Путь к документам на сервере: " .
$_SERVER["DOCUMENT_ROOT"] . "<br />\n";
echo "Полный путь к текущему скрипту: " .
$_SERVER["SCRIPT_FILENAME"] . "<br />\n";
echo "Имя текущего скрипта: " .
$_SERVER["PHP_SELF"] . "<br />\n";
?>
- Пользоваться этим массивом нужно аккуратно, т.к. некоторые сервера имеют достаточно специфичные настройки или значения параметров. Иногда это приводит к неприятным ошибкам, которые очень сложно диагностировать и исправить.
- $_ENV - содержит переменные окружения установленные для всех скриптов на сервере.
Суперглобальные массивы очень удобны в работе, но злоупортеблять ими не стоит, особенно массивом $_SESSION. Если переменной нужна только в локальной области видимости - не надо её делать глобальной. Слишком большое количество "лишних" переменных сильно снижает быстродействие и эффективность скрипта.
Немного практики для закрепления материала (сделайте задания самостоятельно и ответы напишите в комментариях):
1. Дан массив $a = array('Linux', 'Mac OS', 'Max', 'Alex', 'Dragons', 'Little');. Определите числа элементов в массиве с помощью функции count().
2. Создайте массив и отобразите его с помощью функции ptint_r.
3. Создайте текстовый файл (заполните его) и с помощью функции file(), возвратите содержимое в виде массива.