Как сделать массив php

Обновлено: 07.07.2024

В этой небольшой статье мы рассмотрим несколько способов работы с массивами. Стоит отметить, это один из самых важных типов данных и современные языки программирования даже сложно представить без них. Что же такое массив?
Массив представляет собой структурированный набор данных.
По их структуре можно определить это простой массив или ассоциативный. Нельзя сказать наверняка какой из них лучше, т.к. применять тот или иной тип нужно по ситуации.

Как создать простой массив в PHP

Вот как выглядит простой массив:

Сразу же хочу обратить ваше внимание на данные (да, я специально их так записал 🙂 ). Данные типа строка, или string всегда записывайте в кавычках, не важно в каких, пойдут и одинарные и двойные (главное чтобы строка начиналась и закрывалась такой же кавычкой). У числа 29 тип integer, или число — для таких типов данных кавычки не нужны.
Проверим как выглядит массив $my_array:

"; /* получим Array ( [0] => Стул [1] => Облако [2] => 29 ) */ ?>

так выглядит простой массив.
0,1,2 — индексы нашего массива. С помощью индексов мы можем вывести что-то конкретное из массива.

Также, мы можем создать такой же массив если напишем:

И, есть еще третий способ:

индексы будут заполнены от 0.

PHP что такое ассоциативный массив

Что такое простой массив мы уже разобрались. Ассоциативный массив отличается тем, что вместо индексов используют ключи. То есть, для доступа к значениям мы уже не будем использовать 0,1 или 2. Запишем наш простой массив как ассоциативный:

И для вызова мы будем использовать

Вместо цифры (индекса) мы задаем осмысленное название (ассоциацию) и наш индекс теперь можно назвать ключем массива (item, sky, number). Наиболее популярная и, пожалуй, самая удобная запись ассоциативного массива:

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

Буквально пару слов про этого гиганта 🙂

Как вы поняли, вместо значения, которым раньше была строка или число, теперь выступает такой тип данных как массив (сделаю тебе массив в массиве, чтобы когда ты вызывал массив там был еще один массив :)).

автор: Dmitriy

- Создание сайтов на 1С-Битрикс любой сложности
- Вёрстка макетов Figma, Photoshop, Zeplin
- Поддержка проектов на Битриксе
- Разработка нового функционала для сайта
- Парсинг данных
- Выгрузка \ Загрузка файлов в формате XML, YML, XLS, XLSX, CSV, JSON
- Интеграция по API со сторонними сервисами
и многое другое

Перед чтением см. новые уроки раздела "Важное", которые появились выше.

  • Урок №
    новая вкладка с new.code.mu
    часть 1
  • Урок №
    новая вкладка с new.code.mu
    часть 2
  • Урок №
    новая вкладка с new.code.mu
    часть 3
  • Урок №
    новая вкладка с new.code.mu
    часть 4
  • Урок №
    новая вкладка с new.code.mu
    часть 5
  • Урок №
    новая вкладка ютуб
    пагинация

Практика

Движок PHP

Продвинутые БД

Аутентификация

Практика

ООП и MVC

Абстрактные классы и интерфейсы

  • Урок №
    новая вкладка с new.code.mu
    Абстрактные классы
  • Урок №
    новая вкладка с new.code.mu
    Введение в интерфейсы
  • Урок №
    новая вкладка с new.code.mu
    Применение интерфейсов
  • Урок №
    новая вкладка с new.code.mu
    Параметры методов в интерфейсе
  • Урок №
    новая вкладка с new.code.mu
    Объявление конструктора в интерфейсе
  • Урок №
    новая вкладка с new.code.mu
    Наследование интерфейсов друг от друга
  • Урок №
    новая вкладка с new.code.mu
    Интерфейсы и instanceof
  • Урок №
    новая вкладка с new.code.mu
    Реализация нескольких интерфейсов
  • Урок №
    новая вкладка с new.code.mu
    Наследование от класса и реализация интерфейса
  • Урок №
    новая вкладка с new.code.mu
    Константы в интерфейсах
    Новый урок в данном разделе

Трейты

  • Урок №
    новая вкладка с new.code.mu
    Введение в трейты
  • Урок №
    новая вкладка с new.code.mu
    Несколько трейтов
  • Урок №
    новая вкладка с new.code.mu
    Конфликты методов
  • Урок №
    новая вкладка с new.code.mu
    Модификаторы доступа
  • Урок №
    новая вкладка с new.code.mu
    Приоритет методов
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Статические свойства
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Статические методы
  • Урок №
    новая вкладка с new.code.mu
    Абстрактные методы
  • Урок №
    новая вкладка с new.code.mu
    Трейты в трейтах

ООП Магия

Практика

  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс Arr
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс Ticket
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс TicketCollection
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс Date
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс Interval
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс File

Практика: классы как набор методов

  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс ArrayConvertor
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс TagHelper
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс FormHelper
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс TableHelper
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс SessionShell
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс CookieShell
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс FileManipulator
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс databaseShell TODO cart корзина flash шаблонизатор роутер контроллер кеш логи фалидатор

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

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

Поэтому для таких вещей был изобретен специальный тип данных. Он называется массив.

Массив создается с помощью функции []:

Пока созданный нами массив не содержит никаких данных. Заполним его названиями дней недели (для краткости пишу две буквы каждого дня):

Каждое значение списка, который мы записали в массив (в нашем случае каждый день недели), называется элементом массива.

Элементы разделяются между собой запятой. После этой запятой можно ставить пробелы, а можно и не ставить.

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

Посмотреть содержимое массива с помощью echo мы, увы, не сможем. Попробуйте сделать так:

Вы увидите на экране слово Array вместо содержимого массива.

Для того, чтобы PHP вывел нам все элементы массива, нужно воспользоваться функцией var_dump:

Вот теперь мы действительно увидим все элементы нашего массива.

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

Как вывести отдельный элемент массива

Итак, массив месяцев мы составили и даже научились смотреть на него функцией var_dump. Однако, полезного пока мало, так как var_dump используется для отладки кода и выводит весь массив целиком.

Предположим, мы хотим вывести на экран среду.

Делается это так: нужно после переменной массива (в нашем случае $a) написать квадратные скобки [ ], а в них указать порядковый номер элемента, который мы хотим вывести: $a[3]. Казалось бы, что порядковый номер среды - это 3, но это не так. Потому что в программировании нумерация начинается с нуля . Поэтому 0 - это понедельник, 1 - это вторник, а 2 - это среда.

Посмотрите и повторите пример:

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

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

В нашем случае PHP сам определял ключи для элементов - это были их порядковые номера. Иногда это может оказаться неудобным - мы хотим вывести на экран название третьего дня недели (среду), а должны писать в квадратных скобках цифру 2.

Поэтому в PHP можно указать ключи в явном виде – так, как нам нужно. Сделаем так, чтобы понедельник имел ключ 1, а не ноль, как было раньше (и всем остальным дням прибавим единицу):

Синтаксис здесь такой: ключ, затем идет стрелка =>, а потом значение.

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

Узнаем зарплату Васи:

Массивы, у которых явно указаны ключи, называются ассоциативными.

Хитрость с ключами

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

Напомню вам этот массив:

На самом деле нет необходимости расставлять ключи всем элементам - достаточно только первому элементу поставить ключ 1.

Если у второго элемента не будет ключа, PHP поставит его автоматически, причем следующий по порядку.

А следующим номером будет как раз-таки число 2, так как предыдущий элемент имел ключ 1 (неважно, что мы сами его поставили, а не PHP автоматически).

Давайте поправим наш массив:

Итак, этот массив с одним нашим ключом фактически будет таким же, как и массив со всеми ключами, но сделать его проще - ключ ставится только первому элементу, а не всем.

Как еще можно создать массив

Объявление массива с помощью команды [] не является единственным способом его создания.

Можно просто присвоить значения элементам массива, не объявляя его через array (PHP нас поймет и сам создаст массив):

Естественно, ключи могут быть не только числовыми, но и текстовыми:

Кроме того, можно сделать так, что PHP сам добавит ключи (начиная с нуля и так далее). Для этого мы оставим квадратные скобки пустыми: $a[] = 1, а PHP сам добавит ключ. Пример:

Все способы создания массива

Итак, повторим все способы создания массива:

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

Элементы массива могут быть не только строками и числами, но и массивами. То есть у нас получится массив массивов или многомерный массив.

Давайте сделаем массив студентов $students, который будет содержать два подмассива: студенты мужского пола и женского:

Чтобы вывести какой-либо элемент из многомерного массива следует писать уже не одну пару [ ], а две: $a['boys'][0] – так мы выведем 'Коля'.

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

А если мы хотим узнать не только пол, имя и возраст пользователя, но и, допустим, любимые сериалы? Очень непросто назвать один самый любимый сериал, а вот вспомнить несколько — намного легче. Сохранение в переменную-массив нескольких значений выглядит так: $fav_shows = ["game of thrones", "american horror story", "walking dead"]

В этом примере мы сохранили в переменной $fav_shows сразу три значения. Но сохранить эти данные — это только половина дела. Как с ними потом работать? Уже знакомый вам способ вывода переменной на экран не будет работать с массивами:

Чтобы получить определенный элемент массива, необходимо знать его индекс (ключ). Напечатаем названия всех сериалов из массива через запятую:

Если нам перестал нравиться один из сериалов, так как новый сезон оказался очень плох или появился новый фаворит, значения в массиве можно заменить. Чтобы вычеркнуть старое значение и заменить его новым, нужно присвоить новое значение любому из существующих в массиве индексов: $fav_shows[4] = "fargo"

Для полного удаления (без замены на другое) значения по его индексу существует функция unset : unset($fav_shows[4])

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

В предыдущем разделе мы познакомились с так называемыми простыми массивами. Но в PHP существует и чуть более сложный тип массивов — ассоциативные. Ассоциативные массивы отличаются от простых тем, что вместо индексов у них ключи. И если индекс всегда является целым, порядковым числом, то ключ может быть любой произвольной строкой. Вот для чего это нужно. Мы уже знаем многое о нашем пользователе: его имя, возраст, любимый цвет и сериалы. Есть только одно неудобство: все эти данные сейчас находятся в разных переменных. Было бы удобно хранить все эти данные в одном месте, и именно в таких ситуациях помогают ассоциативные массивы.

Запись всей информации о пользователе с помощью ассоциативного массива:

Обратите внимание: массив может содержать другой массив в качестве одного из значений. В нашем примере мы поместили простой массив внутри ассоциативного под ключом “fav_shows”.

Вывод информации из ассоциативных массивов аналогичен простым массивам.
Показ всей информации о пользователе из переменной $user :

В этом тренажёре вы потренируетесь использовать массивы в PHP на реальных задачах.

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

Массив может быть другого типа, без какой-либо конкретики по пунктам. Будет только тема. Допустим, это web-прграммирование. А в качестве элементов будут языки - HTML, CSS, JavaScript, PHP, MySQL. Всего 5 элементов.

Исходя из последнего примера предположим массив:

web-программирование
1. HTML
2. CSS
3. JavaScript
4. PHP
5. MySQL

Теперь смотрим на данный пример и анализируем основные понятия.

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

Массив в данном примере будет называться web-программирование.

У каждого элемента есть своё порядковое место, идентификатор.
Индекс (ключ массива) - либо порядковый номер, либо текстовое значение, по которому можно идентифицировать элемент.

Индексами в примере выше будут числовые значение от 1 до 5. При обращении к индексу 2 мы увидим CSS.

Пример массива в PHP

Теперь давайте рассмотрим вышеуказанный пример в синтаксисе PHP, а не русского языка. Допустим массив будет называться короче - web. В квадратных скобках [] будет вставлять индекс.

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

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

Одномерный массив

ИНДЕКСНЫЙ МАССИВ

Выше, с web-программированием, мы рассмотрели как раз пример одномерного массива.
Таким способом он создаётся редко. Он скорее наглядно показывает структуру массива. Чаще прибегают к другому методу.

Если не указать индекс, то заполнение значений индекса идёт с 0 (нуля). Первый элемент имеет индекс 0, второй 1, третий 2 и так далее. Более того, все счётчики программирования начинают отсчёт с нуля.

Если Вы хотите задать значения индекса, то их надо указать следующим образом. Знак => является указателем для присваивания индекса значению или наоборот значению индекс.


В примере отсчёт начинается с 1. Переменная с индексом 0 вследствие этого пустая.

В следующем примере мы не будем указывать индекс.


Можно проследить, что происходит последовательное заполнение с нуля.

АССОЦИАТИВНЫЙ МАССИВ

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


Как видите, всё достаточно просто. Только значение индекса закавычиваем.

Двумерный массив

Если Вы пропустили первую часть с Одномерным массивом , то настоятельно советую прочитать.
Если говорить проще, то это массив в массиве. То есть элементов большого массива является другой. Подобные массивы очень тормозят работу скрипта, загружая оперативную память, поэтому для быстрой обработки подобных групп данных созданы Базы Данных ( Что такое База данных? ), но о ней позже. Давайте разберём пример двумерного массива.


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

Для этого расширим последнюю строчку и напишем её следующим образом.

Функции работы с массивами php

Foreach - циклическая функция для работы с массивами, в которой количество циклов равно количеству элементов массива.

Имеет следующий вид. Код PHP


Ну и сразу пример работы


На экран скрипт выведет

Деннис Ритчи
Кен Томпсон
Билл Гейтс
Стив Джобс
Count - функция, возвращающая количество элементов в массиве.


Sort - функция, сортирующая элементы массива. Удобна в случае числовых значений индекса.
Arsort - функция, сортирующая элементы массива в обратном порядке.


Unset - функция, удаляющая элемент массива.


Array_search - функция поиска в массиве. Имеет два аргумента. Проще говоря, имеет вил array_search('что', где)


Shuffle - функция, которая перемешивает ключи значений массива.

loader

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

Давайте теперь создадим в папке с нашим проектом файл для наших экспериментов с массивами. Назовём его arrays.php.

Объявляется массив в PHP с помощью квадратных скобок, вот так:

Вот так мы создали пустой массив.

В старом коде можно встретить пример такого определения массива:

Сейчас такая запись является устаревшей, использовать её не стоит!

Можно также создать массив, в котором уже будут какие-либо значения. Это делается так:

Вывести получившийся массив можно с помощью уже известной нам функции var_dump:

Нумерованные массивы

Array – это тип объекта, а именно массив. Size=3 – это размерность массива (содержит 3 элемента). 0, 1, 2 – это ключи массива, которые также называются индексами. По этим ключам хранятся значения, в нашем случае эти значения – строки. Как мы можем видеть, ключи массива нумеруются с нуля, и далее просто увеличиваются на единицу.

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

Например, чтобы получить нулевой элемент массива (с ключом 0), мы должны сделать следующее:

Результат этого кода:

Давайте получим элемент с индексом 2:

Если же мы попытаемся получить элемент с несуществующим индексом, например – 3:

Ошибка при получении несуществующего элемента массива

То мы получим warning о том, что элемент с таким ключом не найден.

Добавление и удаление элементов массива

Давайте добавим ещё один элемент в массив, для этого используется следующая конструкция:

Давайте после этого снова посмотрим на наш массив с помощью var_dump:

Результат – ещё один элемент с индексом 3:

Для удаления элементов массива используется конструкция unset. Давайте удалим элемент с индексом 2:

Результат этого кода:

И снова вернёмся к ключам

Вообще говоря, эти ключи можно задать самому, ещё при создании массива. Вот так:

Как мы видим, ключи теперь – это 5, 3 и 9.
Если теперь добавить элемент в массив, то у него будет индекс, на единицу больше максимального числового значения ключа:

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

Если значение по такому ключу уже есть в массиве, оно просто заменится новым. Например, давайте заменим яблоко на манго:

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

Помимо числовых ключей можно использовать обычные строки. Такие массивы называются ассоциативными. Давайте представим такую ситуацию: есть какая-то статья, у неё есть название, текст и автор. Её можно легко представить в виде массива. Сделаем это:

Результат работы этого кода:

Отлично, а теперь мы можем использовать это внутри HTML-разметки:

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

Помните, в начале урока я сказал, что по ключам массива хранятся какие-то значения, и в нашем случае это строки. Так вот, элементом массива, вообще говоря, может являться что угодно. Даже сам массив. =)

Давайте на примере нашей статьи – у автора может быть имя и фамилия. И мы хотим хранить их отдельно друг от друга. Тогда автор – это массив с двумя ключами – first_name и last_name.
Давайте сделаем это:

Вот так всё просто, article – это массив, у которого по ключу author – тоже находится массив.
Чтобы получить имя автора нужно использовать следующий код:

Сначала в массиве $article получили значение по ключу author, этим значением оказался массив. А затем уже из этого массива получили значение по ключу first_name. И результат этого кода, разумеется:

Давайте теперь используем эти значения в уже использованном нами шаблоне:

Разумеется, можно и внутри этого значения создать массив, а внутри него – ещё один, пока не надоест.

В следующем уроке мы рассмотрим более сложные и интересные примеры работы с массивами.

Читайте также: