PHP массивы · 12 min read · Nov 18, 2025
Подробное руководство по массивам в PHP
Подробное руководство по массивам в PHP
Добрый день!
Вот еще одна статья из серии Fast PHP Articles. Сегодня мы обсудим МАССИВЫ. Мы узнаем его синтаксис, его различные типы, различные встроенные функции массивов, которые помогают быстро выполнять различные задачи, связанные с массивами, и различные практические примеры, объясняющие использование массивов в PHP.
К концу этой статьи вы должны быть в состоянии:
- Определить массивы
- Использовать различные типы массивов
- Использовать различные встроенные функции, связанные с массивами, например list(), each(), var_dump, print_r, var_export()
- Написать как базовый, так и сложный php код, используя массивы.
- Работа с многомерными массивами
- Понимание цикла Foreach с помощью различных примеров
Но прежде чем мы обсудим массивы, позвольте мне рассказать вам очень интересную историю.
У меня есть магазин DVD рядом с офисом, который имеет очень хорошую коллекцию английских фильмов. Вы можете найти фильмы почти всех жанров, например, боевики, ужасы, романтические фильмы (хахаха - ‘глубокий вдох’), драмы, театральные постановки, религиозные фильмы и так далее….
Владелец магазина не очень образованный человек, но все же он может легко управлять более чем 20,000 DVD, и он может достать фильм, как только вы скажете его название… хм, вопрос в том, как он это делает?
Ну, я проанализировал его стратегию и позвольте мне раскрыть этот большой секрет организации группы предметов с помощью специального метода для их легкого управления.
Он классифицировал все DVD по различным жанрам, как мы обсуждали выше, и также дал специальные идентификаторы / коды / номера различным полкам в своем магазине. Он хранит связанные фильмы на одной и той же полке. Каждая полка подписана по имени категории, например, Романтические фильмы, Ужасы и т.д. Каждому DVD присвоен уникальный идентификатор, который можно использовать для отслеживания этого DVD.
Когда клиент запрашивает фильм, скажем, Double Team, он быстро переходит к полке с надписью Боевики, затем к ряду с надписью ‘D’, что означает названия фильмов, начинающиеся с ‘D’, и затем быстро доходит до последовательности ‘D’, за которой следует ‘O’, и получает фильм DOUBLE TEAM. И он запоминает идентификаторы известных DVD, так что когда вы спрашиваете его, он скажет вам взять DVD # xxxx с полки с этой надписью, и вы можете сразу же взять его оттуда.
И все это происходит так быстро, что кажется, будто это магия, достать конкретный DVD из огромной коллекции так быстро. Так что, если вы когда-либо начнете управлять магазином DVD, сделайте следующее, чтобы ОРГАНИЗОВАТЬ ВАШИ DVD:
a) Храните похожие DVD на одной полке.
b) Подписывайте каждую категорию по ее имени.
c) Подписывайте РЯДЫ DVD.
d) Присваивайте идентификаторы всем DVD.
Давайте запомним мораль этой истории и вернемся в мир компьютеров.
В программировании иногда вам нужно работать с различными связанными значениями, которые связаны друг с другом различными способами. Например, Имена Топ Пяти Студентов, Модели Автомобилей Porsche, Переменные, отправленные из формы и так далее. В таких условиях вам нужно организовать свой код и логику, чтобы эффективно и быстро обрабатывать данные одного типа. Для этой цели вы можете использовать логику продавца DVD:
- Организуйте данные в различные связанные категории.
- Подписывайте РЯДЫ.
- Присваивайте уникальные идентификаторы каждому значению данных.
Существуют различные техники для этого, и одна из них - МАССИВЫ.
Сырая дефиниция массивов: Коробка, которая помогает вам хранить похожие данные / данные одного интереса вместе для лучшей организации и обработки
Правильное определение массива:
“Собрание различных переменных под одной меткой для поддержания значений организованными и легкодоступными для обработки”
Да, это мое собственное определение массивов, и я оставляю за собой право определять что угодно своими словами, пока основная концепция верна, и вы можете понять, о чем я говорю.
Хотя некоторые также определяют массивы как “это своего рода переменная, которая содержит больше переменных в себе”.
Пожалуйста, помните, что PHP обрабатывает обычные переменные и массивы немного по-разному.
Синтаксис массива:
$arrayName = array ("value1?","value2?","value3?");Мы используем знак $ для задания имени массива, как мы делаем для переменных, после этого знак равенства и затем ключевое слово ‘array’, которое говорит парсеру, что мы работаем с массивами, а затем различные значения в скобках, и каждое значение заключено в двойные кавычки, разделенные запятой.
Пример PHP для определения и печати массивов:
$Top3Sites = array (“fastcreators.com”,”howtoforge.com”,”scriptsbible.com”);
print_r($Top3Sites);
?>
Вывод вышеуказанной программы будет:
Array
(
[0] => fastcreators.com
[1] => howtoforge.com
[2] => scriptsbible.com
)
Пожалуйста, обратите внимание, что мы используем print_r для печати массива, потому что вы не можете напечатать массив с помощью функции echo или print (обе используются для отображения вывода), хотя вы можете использовать echo или print для отображения отдельных элементов из массива, например:
echo $Top3Sites[0]; //fastcreators.comПомните, что номер индекса начинается с 0, а не с 1.
Каждое значение массива получает уникальный идентификатор, который называется НОМЕР ИНДЕКСА.
Другой способ может заключаться в том, чтобы определить три разные переменные, а затем присвоить им значения и использовать различные операторы для их отображения. Это может быть приемлемо в случае трех значений для аргумента, хотя будет отвергнуто, когда мы имеем дело с пятьюдесятью или сотней значений.
Таким образом, массивы более организованы и могут служить для сбора различных значений под одной меткой для быстрого процесса.
В приведенном выше примере мы определили и присвоили значения массиву в одном шаге, хотя вы также можете сделать это следующим образом:
$students = array(); //просто определите массив
//присвоение значений $students[0] = “Haroon”;
$students[1] = “Celine”;
$students[3] = “Jennifer”;
$students[4] = “Bobby”;
?>Типы массивов:
Существует три различных типа массивов в PHP:
a) Числовой массив: Массив с числовым идентификатором ключа.
b) Ассоциативный массив: Массив, в котором каждый идентификатор ключа связан со значением.
c) Многомерный массив: Массив, содержащий один или несколько массивов.
Теперь давайте обсудим различные типы массивов подробнее.
Числовые массивы: Числовые массивы используют целые числа / числа в качестве их номера индекса для идентификации каждого элемента массива. Пример, который мы обсуждали выше, является числовыми массивами, так как они имеют целочисленные значения в качестве индексов для каждого элемента.
$colours = array(“white”,”black”,”blue”);
print_r($colours);/*
вывод будет
Array
(
[0] => white
[1] => black
[2] => blue
)
*/
?>
В приведенном выше выводе вы можете видеть, что номера индексов для белого, черного и синего равны 0,1,2 соответственно, которые являются числовыми значениями, и поэтому мы называем такие массивы числовыми массивами.
Ассоциативные массивы:
Иногда лучше использовать имя индекса вместо номера индекса, например, если вы хотите сохранить имена и номера трех студентов, то вашим лучшим вариантом будет использовать имя каждого студента в качестве индекса для массива, а его номера в качестве значений, смотрите пример ниже,
$students[‘Anna’] = 90;
$students[‘Maria’] = 60;
$students[‘Jennifer’] = 40;
?>
Когда вы отправляете форму с помощью метода POST или GET, вы получаете аналогичный ассоциативный массив на принимающей странице, который содержит имя каждого поля формы в качестве индекса массива и его значение в качестве значения индекса. Попробуйте создать HTML-форму с некоторыми полями и отправить ее, а на принимающей странице напечатайте глобальные массивы, такие как
print_r($_POST);
print_r($_GET);
и вы увидите ассоциативный массив.
Ассоциативные массивы легче обрабатывать и обрабатывать информацию, особенно при работе со сложной отправкой форм и динамическими значениями из базы данных и т.д.
Многомерные массивы:
Многомерный массив может содержать массивы внутри себя, и подмассивы содержат больше массивов внутри них.
Давайте перейдем к реальному примеру, чтобы понять концепцию многомерных массивов:
У Дэвида есть два сына Ричи и Мейсон. У Ричи есть две дочери Сью и Наташа, а у Мейсона три дочери Ничол, Сальма и Амбер.
Теперь их семейное дерево выглядит следующим образом:

Если мы хотим отобразить семейное дерево Дэвида с помощью многомерного массива в PHP, то мы можем определить массив следующим образом:
$david = array
(
“richie”=>array
(
“Sue”,
“Natasha”
),
“Mason”=>array
(
“Nichole”,
“Salma”,
“Amber”
)
);Вот как вы можете использовать многомерные массивы для организации данных. Попробуйте отправить массив полей формы, а затем напечатайте глобальный массив, чтобы проверить вывод, вы получите глобальный массив в виде многомерного массива, который будет содержать больше подмассивов.
ЦИКЛ FOREACH: Если вы помните, в моей последней статье о “Циклах в PHP” я оставил цикл FOREACH для обсуждения позже, и теперь пришло время обсудить его.
Цикл foreach используется для массивов, чтобы взять каждое следующее значение из массива и выполнить любое необходимое действие с ним.
Основной синтаксис цикла foreach выглядит следующим образом:
Синтаксис FOREACH:
foreach ( $arrayname as $temporaryVarName ) { // тело цикла foreach
//$temporaryVarName хранит значения массива и
//при каждом выполнении цикла оно будет брать следующее доступное значение из массива
}
Давайте напишем программу, используя цикл foreach, чтобы понять его работу более глубоко:
$students = array(); // определите массив студентов
//присвоение значений
$students[0] = “david”;
$students[1] = “kevin”;
$students[2] = “julie”;
$students[3] = “nayyar”;
/
теперь мы будем использовать цикл foreach, чтобы отобразить все имена студентов, т.е. значения массива за один раз /
foreach ( $students as $std_name ) {
echo $std_name . “\n”;
}
?>
В приведенном выше коде $std_name работает как временная переменная для получения каждого значения массива. При каждом выполнении цикла следующее доступное значение массива перезаписывает существующее значение $std_name, и затем $std_name указывает на текущее извлеченное значение. Так что это просто как проходить по значениям вашего массива одно за другим.
Вывод вышеуказанного кода будет:
david
kevin
julie
nayyar
так как мы используем \n (перенос строки), чтобы отобразить каждое имя на следующей строке.
Цикл foreach завершается, когда больше нет доступных значений, т.е. он достигает последнего значения массива, которое в нашем случае - NAYYAR.
Вы можете прервать цикл в любое время, используя оператор break, если это необходимо (мы обсуждали оператор break в РЕШЕНИЯХ С ИСПОЛЬЗОВАНИЕМ SWITCH В PHP).
Например, если вы хотите прервать цикл, если имя - julie, то вы можете включить оператор IF в приведенный выше код следующим образом:
foreach ( $students as $std_name ) {
if($std_name == “julie”) break;
echo $std_name . “\n”;
}
?>
У нас есть несколько других очень полезных функций, которые могут работать с массивами, чтобы обеспечить быструю обработку массивов для предоставления эффективных результатов. Некоторые из них обсуждаются ниже:
Важные функции массива:
1) Сохранить вывод функции print_r: мы ранее использовали print_r для отображения значений массива, хотя мы можем добавить дополнительный аргумент к print_r и сохранить его вывод в переменной, например:
$myarray = array(“Apples”, “Oranges”, “Pears”);
$output = print_r($myarray, true);
print $output;
?>
Функция print_r отобразит сам массив, если вы не используете TRUE - второй аргумент, однако она сохранит свой вывод в переменной, если TRUE предоставлено.
2) Как найти размер массива? Размер массива означает, сколько значений содержит массив… если вы хотите найти количество значений массива, вы можете использовать функцию COUNT следующим образом:
$myarray = array(“Apples”, “Oranges”, “Pears”);
$size = count($myarray);
print $size; // 3
?>
Вышеуказанная программа отобразит 3, потому что у нас три элемента в массиве.
3) Функция var_dump:
Существует аналогичная функция print_r(), которая называется var_dump(). Она делает в основном то же самое, но
a) выводит размеры переменных,
b) не выводит непубличные данные в объектах, и
c) не имеет опции передать второй параметр для возврата своего вывода.
Например, изменив первый скрипт, чтобы использовать var_dump() вместо print_r(), мы получили бы следующий вывод:
array(3) {
[0]=>
string(6) “Apples”
[1]=>
string(7) “Oranges”
[2]=>
string(5) “Pears”
}
Здесь вы можете видеть, что var_dump() сказал нам, что массив имеет три значения, и также выводит длины каждой из строк. Для учебных целей var_dump() лучше, так как показывает размеры переменных, однако вы, вероятно, захотите использовать print_r() в своей работе.
4) Функция var_export:
Также есть функция var_export(), которая похожа на обе var_dump() и print_r(). Ключевое отличие var_export(), однако, заключается в том, что она выводит информацию о переменной в стиле, который может быть использован как PHP код. Например, если бы мы использовали var_export() вместо print_r() в тестовом скрипте, это бы вывело следующее:
array (
0 => ‘Apples’,
1 => ‘Oranges’,
2 => ‘Pears’,
)
Обратите внимание, что после последнего элемента стоит запятая, однако это игнорируется PHP, и вы можете скопировать и вставить эту информацию непосредственно в свои собственные скрипты, вот так:
$foo = array (
0 => ‘Apples’,
1 => ‘Oranges’,
2 => ‘Pears’,
);
?>
5) Функция array_shift:
Функция array_shift удаляет первый элемент массива из массива и сохраняет его в принимающей переменной.
Например, если я хочу удалить Apples из массива, использованного в предыдущих программах, и сохранить его в другой переменной, тогда я могу написать программу следующим образом:
$myarray = array(“Apples”, “Oranges”, “Pears”);
$fruit = array_shift($myarray);
echo $fruit; // Apples
print_r($myarray); // Oranges и Pears будут отображены без Apples
?>
Это очень полезная функция, если у вас есть многомерный массив, отправленный из формы, и вы хотите извлечь подмассив из основного массива. Но помните, когда вы извлекаете подмассив из основного массива с помощью array_shift, то принимающие переменные ($fruit в предыдущем случае) не будут обычной переменной, а массивом.
Я также рекомендую вам изучить три другие полезные функции, связанные с array_shift в Официальном руководстве PHP на
array_unshift
array_pop
array_push
PHP предлагает очень длинный список различных полезных функций массива, которые вы можете найти в ОФИЦИАЛЬНОМ РУКОВОДСТВЕ PHP.
Одно, что я хочу упомянуть здесь, это то, что цикл foreach не является единственным способом обработки массивов - вы можете сделать это с помощью других циклов, например, ЦИКЛА FOR или функций list() и each().
Чтобы обработать массив, вам нужно будет найти общее количество значений в массиве, т.е. размер массива, как ниже:
for ($i = 0; $i < count($array); ++$i) {
print $array[$i];
}
?>
Это будет работать хорошо для числовых массивов, которые имеют целочисленные значения в качестве индексов, но это не подходит для ассоциативных массивов.
Обработка массивов с помощью функции LIST():
PHP предлагает функцию LIST(), которая может быть использована для быстрого и легкого прохода по значениям массива, как ниже:
while (list($var, $val) = each($array)) {
print “$var is $val\n”;
}
?>
List() - это функция, которая делает противоположное array() - она берет массив и преобразует его в отдельные переменные. Each() принимает массив в качестве своего параметра и возвращает текущий ключ и значение в этом массиве, прежде чем продвинуть курсор массива. “Курсор массива” - это технический термин для элемента массива, который в данный момент читается. Все массивы имеют курсор, и вы можете свободно перемещать его - он используется в цикле while выше, где нам нужно пройти через массив. Сначала each() вернет первый элемент, затем второй элемент, затем третий и так далее, пока не обнаружит, что больше нет элементов, в этом случае он вернет false и завершит цикл.
Значение первой строки - “получить текущий элемент в массиве и присвоить его ключ $var и его значение $val, затем продвинуть курсор массива”.
Получить как индекс, так и значение элемента массива: Если вы хотите прочитать имя индекса, а также его значение для каждого элемента массива, то вы можете использовать цикл foreach следующим образом:
foreach ($array as $key => $val) {
print “$key = $val\n”;
}
?>
Это очень удобно, когда вы имеете дело с ассоциативными массивами.
Массивы - это очень глубокая тема, и о ней можно говорить гораздо больше, и даже я могу легко написать целую книгу только о массивах. Но цель этой статьи - дать вам очень четкое понимание массивов и различных методов хранения и обработки информации в массивах. Однако, если у вас есть какие-либо конкретные вопросы о массивах, пожалуйста, не стесняйтесь писать мне по электронной почте или комментировать эту статью.
Это длинная статья, так что могут быть некоторые опечатки; если вы найдете какие-либо, пожалуйста, сообщите мне, чтобы я мог их исправить. До встречи снова, продолжайте практиковаться и берите себя в руки…
- Харун Ахмад
Другие статьи этой серии:
FAST PHP Tutorial (Часть 1)
Как установить PHP на Windows (Fast PHP Tutorial Часть 2)
Как установить PHP на Linux
Как установить Apache на Windows
Легкие установщики для установки PHP, MySQL, Apache на Windows
Основы программирования на PHP
Операторы в PHP
Принятие решений с использованием IF-ELSE в PHP
Принятие решений с использованием оператора SWITCH в PHP
Циклы в PHP
Get new posts in your inbox
No spam. Unsubscribe anytime.