- Что такое ассоциативные массивы в PHP: как создать, вывести и изменить
- В чём отличие ассоциативного массива от простого массива. Как создать ассоциативный массив
- Как создать. Примеры
- Что такое ассоциативный массив + пример
- Как вывести ассоциативный массив. С примером
- Что такое многомерный ассоциативный массив + пример
- Как заменить значение по ключу ассоциативного массива. Примеры
- Как добавить элемент + пример
- Как удалить элемент + пример
- Полезные видео
Что такое ассоциативные массивы в PHP: как создать, вывести и изменить
Массив в PHP (от англ. Array) — это глобальный объект для хранения данных упорядоченным образом. Как устроен: упорядоченный список элементов всегда имеет собственный ключ, он называется индексом, а каждое значение в такой коллекции данных называется элементом. При этом отсчет индекса всегда начинается с нуля.
Самые частые примеры упорядоченных коллекций в реальном мире — списки данных, например, список HTML-элементов, список пользователей, список продуктов, список адресов.
Если обычный массив похож на числовую линейку, то двумерный — это как массив массивов. Вот как происходит обращение к элементам такого объекта:
- В стандартном одномерном массиве вы можете получить доступ к любому объекту по его номеру в ряду, например, array[21] даст вам 22-й элемент.
- В двумерном к элементам обращаются по строке и столбцу, например, array2d[5][6] даст вам 7-й элемент 6-го элемента.
Аналогичным образом организованы и ещё более многомерные варианты, доступ к которым осуществляется как array[5][3][4][7][. ]. Такие называются многомерными, поскольку они существуют более чем в одном измерении.
Простыми словами, массив PHP — это упорядоченный список элементов с указанным индексом (ключом к ним) для быстрого получения доступа к любому элементу.
В чём отличие ассоциативного массива от простого массива. Как создать ассоциативный массив
Так же, как мы объявляем любой объект типа array:
$myArray = []; $myOtherArray = array();
Разница заключается в том, что это ассоциативный тип. В стандартном массиве, напомним, вы обращаетесь к элементу по его позиции, например, так:
В ассоциативном массиве в качестве такого ключа используются данные, а не индекс, как в данном случае. Например:
Чтобы получить доступ к этому значению, мы используем тот же ключ, как показано ниже:
Array_keys(). Использовать функцию можно в тех случаях, когда нужно получить список всех ключей, используемых в массиве, или функци.
Array_values(). Подойдет, когда нужно получить простой массив значений в некоторой произвольной последовательности.
Вы можете инициализировать ассоциативный массив при его объявлении. Например, вот так:
$myArray = [ 'name' => 'Sergei', 'age' => 48, 'hometown' => [ 'name' => 'Moscow', 'state' => 'Russia' ] ];
И какой-нибудь разработчик наверняка будет использовать соответствующие объекты гораздо чаще, чем ассоциативные массивы. Например, только тогда, когда нужна классическая карта, например – массив объектов, индексированных по их атрибуту ‘id’.
Давайте перейдём от абстрактных случаев к более реальным. Допустим, что у нас имеется список пользователей и на нужно иметь возможность быстро найти их по адресу электронной почты. Учитывая вышесказанное, построить их карту можно, например, вот таким образом:
// учитывая, что $users представляет собой список объектов пользователей с полем 'email' $usersByEmail = []; foreach ($users as &$user) < $usersByEmail[$user->email] = $user; > // теперь array $usersByEmail будет возвращать пользователя, если он известен // имейл адрес как здесь: $email = '[email protected]'; if (array_key_exists($email, $usersByEmail)) < $user = $usersByEmail[$email]; // сделать что-то с пользователем >else < // справиться с ситуацией, когда найти подходящего пользователя не удалось >
Как создать. Примеры
Итак, ассоциативный массив — это массив, использующий именованные ключи, которые им присваивается.
Существует два способа создания ассоциативного массива.
$age = array("Petya"=>"24", "Boris"=>"26", "Janna"=>"32");
$age['Petya'] = "24"; $age['Boris'] = "26"; $age['Janna'] = "32";
Затем такие именованные ключи можно использовать в сценарии:
"24", "Boris"=>"26", "Janna"=>"32"); echo "Petya is " . $age['Petya'] . " years old."; ?>
Цикл по ассоциативному типу. Пример
Чтобы просмотреть и вывести все значения ассоциативного массива, можно использовать цикл foreach, например, вот так:
"24", "Boris"=>"26", "Janna"=>"32"); foreach($age as $x => $x_value) < echo "Key=" . $x . ", Value=" . $x_value; echo "
"; > ?>
Что такое ассоциативный массив + пример
Ассоциативный вид объекта array — это структура данных, которая позволяет хранить пары типа ключ-значение (с уникальными строками в качестве ключей).
Ассоциативные массивы часто используются, когда нужно хранить данные в структурированном виде, но с возможностью их лёгкого извлечения впоследствии. Например, вы можете использовать ассоциативный тип массива для хранения информации о пользователе, где каждый ключ — это имя атрибута пользователя (например, «имя», «email», «возраст»), а каждое значение — соответствующее значение этого атрибута. Чтобы получить данные, хранящиеся в ассоциативном массиве, нужно использовать ключ для поиска соответствующего значения.
Вот пример того, как можно использовать ассоциативный массив в PHP:
$user = array("name" => "Sergei Loftoff", "email" => "[email protected]", "age" => 23); //Получение доступа к значениям в array echo "Name: " . $user["name"] . "\n"; echo "Email: " . $user["email"] . "\n"; echo "Age: " . $user["age"] . "\n";
В этом примере мы создали ассоциативный массив $user, в котором хранится информация о пользователе. Мы можем получить доступ к значениям, хранящимся в нем, используя ключи (например, «name», «email», «age»), указанные в квадратных скобках после имени массива.
Не знаете с чего начать обучение? Прежде чем браться за изучение полноценного языка программирования PHP, разумно будет пройти курс «Веб-разработчик». Если PHP кажется слишком сложным — запишитесь на курс «Основы вёрстки». В указанных курсах вы получите базис для дальнейшего освоения не только PHP но и других языков программирования.
Как вывести ассоциативный массив. С примером
Для вывода воспользуемся print_r. Например, вот таким образом:
Array ( [Человек] => 90 [Собака] => 20 [Кошка] => 5 )
Что такое многомерный ассоциативный массив + пример
Многомерный массив — это массив, содержащий один или несколько массивов.
PHP поддерживает многомерные массивы глубиной в два / три / четыре / пять и более уровней. Однако, объекты глубиной более трех уровней сложны в управлении даже для опытных разработчиков.
Размерность указывает на количество индексов, необходимых для выбора элемента:
- Для двумерного требуется два индекса.
- Для трехмерного потребуется три индекса для выбора элемента.
Двухмерный. Примеры
Двумерный — это как массив массивов (а трехмерный — это массив массивов массивов и так далее).
Многомерный тип массива используется для хранения объекта в непостоянных значениях.
Ассоциативный тип, напомним, хранит данные в виде пар ключ-значение, где ключ может быть целым числом или строкой.
Многомерный ассоциативный тип часто используется для хранения данных в групповом отношении.
Как создать двухмерный тип
На секунду представим, что в нашем мире существуют два сюрреалистических языка — Peton и PeeHpee. И попробуем описать их главные характеристики используя массивы:
"2023", "latest_release" => "4.9.1", "designed_by" => "Guido van Imaginary", "description" => array( "extension" => ".py", "typing_discipline" => "Duck, dynamic, gradual", "license" => "Imaginary Foundation License" ) ); $languages['PeeHpee'] = array( "first_release" => "2023", "latest_release" => "8.4.22", "designed_by" => "Rasmus fon Ivanoff", "description" => array( "extension" => ".php", "typing_discipline" => "Dynamic, weak", "license" => "Imaginary License" ) ); print_r($languages); ?>
Array ( [Peton] => Array ( [first_release] => 2023 [latest_release] => 4.9.1 [designed_by] => Guido van Imaginary [description] => Array ( [extension] => .py [typing_discipline] => Duck, dynamic, gradual [license] => Imaginary Foundation License ) ) [PeeHpee] => Array ( [first_release] => 2023 [latest_release] => 8.4.22 [designed_by] => Rasmus fon Ivanoff [description] => Array ( [extension] => .php [typing_discipline] => Dynamic, weak [license] => Imaginary Foundation License ) ) )
В чем отличие от ассоциативного массива
Оба типа используются для хранения нескольких значений. Разница заключается в том, как они организованы и как их индексировать.
Многомерный массив может иметь любое количество измерений:
Сравнение одномерных, двухмерных и трёхмерных объектов типа Array
Чтобы найти значение, необходимо указать его позицию в самом массиве. Так в одномерным массиве нужно будет указать только индекс, в двухмерном — строку и столбец, в трёхмерном — плоскость, строку и столбец. Существуют массивы гораздо большей размерности (более глубокие), просто их трудно будет представить.
Ассоциативный тип — это совсем другое. В многомерных массивах вы находите данные по позиции. В ассоциативном – по ключу, который может быть любым, например, строкой, датой, цветом и так далее.
Пример ассоциативного типа
В данном случае, если вы спросите «Какое значение для Chandler?», array вернет 50 и так далее.
Вообще существует множество структур данных, которые можно использовать для реализации ассоциативных типов. Двоичные деревья и hashtable — самые популярные из них. И вы можете комбинировать эти структуры: например, значение в ассоциативном массиве может быть многомерным массивом.
Как заменить значение по ключу ассоциативного массива. Примеры
Здесь нет ничего сложного. Допустим у нас есть такой объект-ключ:
Наша задача — произвести замену согласно ключу. Элементарно берём и присваиваем любое новое значение. Например, вот по такому шаблону:
$array_new[Андрей][имя] = 'В нашем случае здесь новое имя';
А теперь попробуем сделать вывод не объекта целиком, а лишь одной ячейки:
Array ( [имя] => В нашем случае новое имя [глаза] => фиолетовые [профессия] => пианист )
Таким образом, мы успешно заменили значение в массиве согласно его ключу.
Как добавить элемент + пример
Чтобы добавить новый элемент в ассоциативный массив, нужно указать новый ключ и присвоить ему значение. Другие методы предполагают использование функции array_push() — для добавления нового элемента в конец массива.
Приведенный ниже пример демонстрирует, как просто добавить новый элемент в существующий ассоциативный массив.
43, "Semen" => 75, "Jorik" => 73, "Elena" => 83, ]; $grades["Boris"] = 31;
Используя echo и print_r(), мы выводим массив до и после добавления нового элемента.
Array ( [Janna] => 43 [Semen] => 75 [Jorik] => 73 [Elena] => 83 )
Array ( [Janna] => 43 [Semen] => 75 [Jorik] => 73 [Elena] => 83 [Boris] => 31 )
Как удалить элемент + пример
Вы можете использовать функцию unset() для удаления целого элемента из ассоциативного массива. Укажите массив и ключ внутри функции unset, и она удалит элемент.
В примере ниже будет удален элемент с ключом «Jorik».
43, "Semen" => 75, "Janna" => 73, "Elena" => 83, ]; unset($grades["Jorik"]); print_r($grades);
Array ( [Semen] => 75 [Jordan] => 73 [Emily] => 83)
Таким образом, элемент с ключом ‘Jorik’ успешно удалён из нашего массива.
Полезные видео
Чтобы лучше закрепить тему обязательно посмотрите эти пять видео — они помогут разобраться в теме чуть подробнее.
Вы усвоите синтаксис для доступа к отдельным элементам в массиве. Вы также подробнее узнаете об ассоциативных массивах, которые позволяют связывать ключ с каждым значением.
Вы узнаете все, что вам нужно знать о массивах, чтобы начать их использовать. Подробнее об индексации таких объектов, а также как происходит переиндексация. Также вы узнаете, как проверить, существует ли элемент в массиве по определенному ключу, и в чем разница между array_key_exists и isset().
Видео расскажет о тонкостях создания ассоциативного массива простым языком, лишь на одном, простом примере.
В этом коротком видео вы узнаете, как создать ассоциативный массив, выполнить цикл и вывести значение отдельных элементов. Это видео также поможет понять: как заполнять элементы HTML-формы, перебирая элементы массива.
Различия между простыми и ассоциативными массивами в PHP. Немного о том, как использовать метод foreach для циклического просмотра любого типа массива.
PHP — неотъемлемая часть бэкэнд-разработки в 2023 году. Успей попасть в группу сегодня и получи профессию разработчика уже завтра!
За 6 недель вы освоите работу с главными инструментами современного backend разработчика и получите 3 проекта в портфолио.