Как сделать из одномерного массива двумерный php

Обновлено: 07.07.2024

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

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

Создание многомерных массивов

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

Сохраним данные из таблицы в двумерном массиве:

$favorites = array(
array("name" => "Андрей","mob" => "5689741523","email" => "andre@mail.com"),
array("name" => "Иван","mob" => "2584369721","email" => "ivan@mail.com"),
array("name" => "Тома","mob" => "9875147536","email" => "toma@mail.com"),
array("name" => "Ира","mob" => "1775147536","email" => "irina@mail.com")
);

Теперь двумерный массив $favorites содержит четыре массива и имеет два индекса: строку и столбец.

Доступ к элементам многомерного массива

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

Например, чтобы получить доступ к телефону Ивана в нашем массиве $favorites, мы должны указать на два индекса (строку и столбец):

Пример

Результат выполнения кода:

Этот же пример можно переписать так:

$favorites = array (
array("Андрей",5689741523,"andre@mail.com"),
array("Иван",2584369721,"ivan@mail.com"),
array("Тома",9875147536,"toma@mail.com"),
array("Ира",1775147536,"irina@mail.com")
);
echo $favorites[1][1]; // 2584369721

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

Получить доступ к элементам массива можно также поместив цикл for внутрь другого цикла for . При этом также нужно указать два индекса:

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

Массив может быть другого типа, без какой-либо конкретики по пунктам. Будет только тема. Допустим, это 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 - функция, которая перемешивает ключи значений массива.

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

Перепишем в более понятном виде:

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

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

Дан следующий массив:

Выведите с его помощью элементы с текстом 'l' , 'e' , 'g' и 'a' .

Дан следующий массив:

Найдите сумму всех его элементов.

Трехмерный массив

Вот пример трехмерного массива:

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

Дан следующий массив:

Найдите сумму всех элементов приведенного массива.

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

Многомерные массивы также могут быть ассоциативными, например, вот так:

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

Дан следующий массив:

Выведите с помощью этого массива имя первого мальчика и имя второй девочки.

Дан следующий массив:

Выведите с помощью этого массива английское название среды.

Дан следующий массив:

'user1', 'age' => 30, 'salary' => 1000, ], [ 'name' => 'user2', 'age' => 31, 'salary' => 2000, ], [ 'name' => 'user3', 'age' => 32, 'salary' => 3000, ], ]; ?>

Выведите с помощью этого массива сумму зарплат первого и третьего юзера.

Произвольные массивы

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

Если переписать его в более понятном виде, то мы увидим, что этот массив "неправильный". В нем рядом с обычными элементами располагаются массивы:

Дан следующий массив:

Найдите сумму всех элементов приведенного массива, обратившись к каждому элементу по его ключу.


Здравствуйте. Помогите,пожалуйста,решить задачи. Заранее спасибо. Задача 1 Найти максимальный по абсолютному значению элемент массива. Задача 2 Найти сумму элементов,индексы которых,в сумме составляют к Задача 3 Найти среднее арифметическое элементов массива с точностью до двух десятичных знаков. Задача4 Найти сумму элементов, стоящих на главной диагонали. Задача 5 Найти сумму элементов, стоящих на побочной диагонали.

Как сравнить два двумерных массива полученных из MySQL количество строк может быть различно а столбцов одинаково. Нужно сравнить две таблици и если в каком либо элементе строки есть отличие вывести в таблицу. Спасибо заранее.

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