Как вывести ассоциативный массив в php
Перейти к содержимому

Как вывести ассоциативный массив в php

  • автор:

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

Массивы — способ хранить много похожей информации в одном месте.

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

Зачем нужны массивы

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

Каждая коробка — элемент массива, номер под ней — индекс. То, что лежит внутри коробки — значение элемента.

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

Чтобы создать массив в PHP напишем так:

Теперь есть два способа туда что-то добавить. Если мы знаем, на какое место в массиве вставить элемент, используем индекс.

Если мы не знаем конкретные индексы или просто хотим добавить элементы в массив по порядку, нужна такая запись:

Нумерация в массивах

По умолчанию счёт элементов массива идёт от нуля. То есть при обращении к коробкам нужно помнить, что у первой номер ноль, у второй — 1, и так далее.

Здесь у второго элемента массива номер 1, а значение — 2

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

Этот код создаст массив из трёх элементов, с номерами 2, 4 и 7. Это легко проверить, если запустить его:

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

Это такие же массивы, только у них индекс не число, а строка. Или что угодно ещё. Неудобно подписывать коробки при переезде по номерам — но если написать «Кухня», «Спальня» или «Гостиная», то сразу будет понятно, где что.

Индекс в таком случае называется ключом — можно представить, что коробка закрыта на замок, а знание ключа поможет её открыть.

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

Тогда если нам нужно будет понять, сколько тарелок лежит в коробке, воспользуемся кодом $kitchen[‘Plates’]; .

Как вывести массив

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

А это код страницы foo.php на PHP, который выведет данные формы, полученные через POST . Здесь мы используем те самые значения атрибутов name , чтобы получить данные из соответствующих полей.

То есть username , email и feedback — ключи, которые не отличаются от атрибута name в форме.

Получение данных через $_GET

Это такая же форма, как выше. Разница в method=»get» — и чуть позже расскажу, в чём ещё.

Код для получения значений формы через $_GET очень похож на прошлый — нужно заменить POST на GET .

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

С получением данных через GET и POST можно поэкспериментировать в первой главе курса «Знакомство с PHP».

Получение массива из базы MySQL

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

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

Разбираем код

Подключаемся к базе MySQL my_users по адресу localhost , от имени пользователя root , с паролем password .

Запрос — получить номера телефонов всех пользователей из таблицы members .

Делаем запрос к базе с помощью существующей в PHP функции mysqli_query .

Заводим пустой массив для полученных данных.

В этой строчке начинаем построчно считывать результаты.

И если результаты есть, записываем их в ассоциативный массив.

Упражнения с массивами на PHP

Попробуйте тренажёр, где можно без установки PHP, прямо в браузере написать код для реального сайта. И заодно разобраться с массивами, циклами и тем, как работает вся эта магия.

Как вывести ассоциативный массив в php

Если выводить здесь вид массива, то:

Если в значении ассоциативного массива применяется два слова, например так:

То возникнет ошибка типа:

Чтобы не возникала данная ошибка ассоциативного массива, то нужно заключить строку с пробелом в кавычки!

Так, обычно, ассоциативный массив в строку не записывают — это просто неудобно. пишут каждую новую ячейку с новой строки:

$цена = array («помидоры» => 15,

«ключ» => «два слова»

Как сделать вывод ассоциативного массива php

Как вывести ассоциативный массив в php на экран!? Нам потребуется выше описанный массив, не сам массив а переменная и функция print_r, которая сможет вывести ассоциативный массив на экран:

Результат вывода ассоциативного массива в php

Пример многомерного «ассоциативного массива» в php

Объединим сразу и многомерный ассоциативный массив и вывод данного массива ! Далее мы видим, что внутри одного массива array , находится несколько других ассоциативных массива array !

Вывод ассоциативного массива с помощью print_r

Для того, чтобы вывести какой-то ассоциативный массив на экран, его нужно сделать, давайте возьмем вот такой:

Теперь, применим функцию print_r к нашему ассоциативному массиву:

И выведем результат работы print_r с ассоциативным массивом прямо здесь:

Как вывести ассоциативный массив через цикл

Возьмем тот же ассоциативный массив , что мы выводили выше :

Вывод из массива ячейки под именем рост:

foreach ($array as $key => $value)

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

$array_keys = ( array_keys ($array ));

foreach ($array as $key => $value)

echo 'имя ключа ='. $array_keys[$i].' | , значение ячейки рост = '. $array [$key][рост]. ' | , значение ячейки вес = '. $array [$key][вес].'<br>';

Как вывести все ключи ассоциативного массива!?

Опять возьмем выше идущий ассоциативный массив и применим к нему функцию array_keys :

Результат вывода всех ключей ассоциативного массива

Вывод значения определенного ключа ассоциативного массива

Это делается очень просто! пишем наш ассоциативный массив, далее квадратные скобки и внутри записываем эту фамилию, и нам остается только вывести определенную ассоциативного массива:

Результат вывода определенной ячейки ассоциативного массива

Вывод значения определенной ячейки ассоциативного массива -> второго уровня

Результат вывода значения определенной ячейки ассоциативного массива -> второго уровня

Вывод значения по номеру ключа ассоциативного массива

Результат вывода значения по номеру ключа ассоциативного массива

Заменить значение по ключу ассоциативного массива

Не будем выводить весь массив, выведем только ячейку массива:

Результат изменения значения ячейки ассоциативного массива по ключу

[имя] => Новое значение

добавить в ассоциативный массив

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

Результат добавления новой ячейки в ассоциативный массив

[имя] => Новое значение

[новый_ключ] => Новое значение нового ключа

Как удалить ячейку/элемент в ассоциативный массив

Собственно массив, который мы возьмем выше. Именно в таком виде.

Далее нам потребуется функция unset. Применяем её к той ячейке «ассоциативного массива«, который мы хотим удалить:

И далее выведем этот же массив с помощью print_r:

Разместим данный код прямо здесь и посмотрим, что у нас получилось!

Результат удаления ячейки/элемента в ассоциативный массив

[имя] => Новое значение

[новый_ключ] => Новое значение нового ключа

Как переименовать ключ в ассоциативном массиве

Итак. предположим, что нам нужно изменить имя ключа, без изменения его значения.

К сожалению в случае переименования ключа в ассоциативном массиве , нет никакой такой замечательной функции rename_key_array.
Поэтому, придется совершить пару телодвижений!

Сверху у нас есть массив и там же есть ячейка «$array[Аминев][рост]» — выведем её с помощью echo $array[Аминев][рост]; :

Из результата мы можем сделать вывод, что ключ массива [рост] — существует и его значение — 178

Переименуем ключ массива:

Для того, чтобы переименовать ключ массива, нам нужно :

Создаем новый ключ :

Ему присваиваем значение ключа , который разбирали выше.

Старый ключ со значением удаляем:

Теперь, мы можем вывести значение переименованного ключа:

Выведем полностью массив с помощью print_r($array);

Результат переименовывания ключа в ассоциативном массиве

[имя] => Новое значение

[новый_ключ] => Новое значение нового ключа

Получить первую ячейку ассоциативного массива

Для этого вам понадобится массив(ассоциативный) который вы уже видели выше($цена).

Навигация по пункту:

Получить первую ячейку ассоциативного массива с помощью array_shift

Внимание! данная функция отрезает от существующего массива первый элемент и ваш первоначальный массив становится на первую ячейку меньше!

Если вам нужен первоначальный массив, тто поступаем так:

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

PHP вывод многомерного ассоциативного массива

У меня есть многомерный ассоциативный массив. Как мне его можно вывести, что бы всё было показано на экране?

Массив примерно такой:

Можно ли как-то вывести его по типу дерева? Что бы выглядело как-то так:

Вы можете обернуть результат в тэг <pre>, как показанно ниже.

E1mir's user avatar

droonny's user avatar

На самом деле, выводят обе команды всё правильно. Вы просто неправильный инструмент для просмотра используете — браузер. Браузер, думая что на выходе html успешно съедает все повторные whitespace символы (пробелы, табы, переходы на новые линии. ).

Есть много способов решить данную проблему:

  1. Смотреть вывод не в браузере(консоль)
  2. Передать не HTMLный Content-Type браузеру. header(‘Content-Type: text/plain’);
  3. Сказать браузеру не форматировать контнент. Обернуть в <pre> тег или задать white-space: pre; для стиля(css) элемента в который выводиться информация.
  4. Установить xdebug . Только на dev машине. Он очень красиво форматирует вывод функции var_dump();

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.6.7.43483

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Массивы в PHP

Массив — это переменная, которая может содержать в себе сразу несколько значений.

Например, так можно объявить массив с тремя значениями:

В коде выше мы создаём переменную $heroes и добавляем в неё 3 строки.

Массивы также отлично подходят для объединения нескольких связанных между собой значений, например характеристик товара:

Создание массива

Для создания пустого массива просто укажите квадратные скобки вместо значения:

Результат в браузере:

PHP сообщает нам, что в переменной лежит массив (англ. array), в котором находится 0 значений.

Чтобы объявить массив с данными, просто перечислите значения в квадратных скобках:

Теперь в переменной $brands лежит массив, состоящий из трёх элементов.

Создание массивов с помощью квадратных скобок работает начиная с версии PHP 5.4. До этого использовался более громоздкий синтаксис:

Ключи и значения массива

Массив состоит из ключей (индексов) и соответствующих им значений. Это можно представить как таблицу:

Ключ Значение
0 Samsung
1 Apple
2 Nokia

У каждого значения есть свой ключ. В массиве не может быть несколько одинаковых ключей.

Вернёмся к предыдущему примеру и посмотрим, что лежит в массиве:

Результат в браузере:

Когда мы создаём массив без указания ключей, PHP генерирует их автоматически в виде чисел, начиная с 0.

Указание ключей происходит с помощью конструкции => :

Простые и ассоциативные массивы

Когда мы создаём массив с числовыми ключами, такой массив называется простым или числовым.

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

Вывод массива

Вывод элементов массива выглядит следующим образом:

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

Однако обе функции выводят информацию на одной строке, что в случае с массивами превращается в кашу. Чтобы этого не происходило, используйте тег <pre> :

Результат в браузере:

Также вывести содержимое массива можно с помощью цикла foreach:

Подробней работу цикла foreach мы разберём в отдельном уроке.

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

Добавление новых элементов в массив выглядит следующим образом:

Но если название ключа не играет роли, его можно опустить:

Удалить элемент массива можно с помощью функции unset() :

Двумерные и многомерные массивы

В качестве значения массива мы можем передать ещё один массив:

В примере выше мы создали массив $human , а затем внутри него создали ещё один массив $human['hands'] . Результат в браузере:

Обратиться к элементу многомерного массива можно так:

Теперь мы можем хранить в одном массиве целую базу товаров:

Или альтернативный вариант:

Задача 1

1. Создайте массивы $user1 и $user2 , заполните ключи name и age в каждом массиве любыми значениями.
2. Увеличьте значение age у обоих массивов на 50%.
3. Выведите на экран значение ключа name обоих пользователей.

Задача 2

1. Создайте массив $city , добавьте в него ключ name с любым значением.

2. Создайте подмассив streets с любыми случайными улицами. Каждая улица должна иметь имя (name) и количество домов (buildings_count), а также подмассив из номеров домов (old_buildings), подлежащих сносу.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *