Открыть меню    

Многомерный массив PHP Вывод при помощи FOREACH

Многомерный массив – это массив, элементами которого являются массивы. В действительности это массив в массиве.

Рассмотрим двухмерный массив, который можно рассматривать как одномерный массив, элементами которого являются одномерные массивы.

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

PHP

    <?php           
    $auto['LADA'][0]  = 1999;
    $auto['LADA'][1]  = 2001;
    $auto['BMW'][0]  = 1991;
    $auto['BMW'][1]  = 2009;
    ?>

ИЛИ Сокращенная форма создания многомерного массива:

PHP

<?php 
$auto = array ('LADA' => array(1999, 2001), 'BMW' => array(1991, 2009));
?>

Как результат, мы создадим такой массив:

  Array 
  (
  [LADA] => Array 
  ( [0] => 1999 [1] => 2001) 
  [BMW] => Array 
  ( [0] => 1991 [1] => 2009 ) 
  ) 

Доступ к элементу многомерного массива осуществляется путем указания всех его индексов. Например, чтобы получить доступ ко второму массиву (который лежит в первом массиве) мы должны задействовать вторую пару квадратных скобок. Теперь элемент массива $auto['LADA'][0] содержит значение 1999.

Вывод многомерного массива. FOREACH

Чтобы вывести все элементы многомерного массива можно использовать цикл foreach. Воспользуемся циклом foreach и извлечем все элементы из нашего примера.

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

PHP

foreach($auto as $brand => $massiv)
{
foreach($massiv  as  $inner_key => $value)
{
echo "[$brand][$inner_key] = $value
"; } }

В результате браузер выведет следующий текст:

[LADA][0] = 1999
[LADA][1] = 2001
[BMW][0] = 1991
[BMW][1] = 2009 

Спасибо за внимание, надеюсь, вам пригодится данная информация.

Комментарии к статье

аватарка пользователя
2013-08-31
yahan

А как по этому массиву сделать обход начиная со второго измерения?
т.е. надо получить:
[LADA][0] = 1999
[BMW][0] = 1991
[LADA][1] = 2001
[BMW][1] = 2009

аватарка пользователя
2015-09-03
robin

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

аватарка пользователя
2015-09-03
robin

Да точно добавил еще 1 элемент к вложенному массиву, стало 4 раза выводится))))

аватарка пользователя
2015-12-03
Влад

А слабо написать как создать многомерный массив, в примере вы его уже взяли готовый!

аватарка пользователя
2016-01-30
alex

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

forum.php.su/topic.php?forum=71&topic=11572
Помогите, пожалуйста! у меня в коде чуть более сложный массив, работает неправильно (((
Скрытый контент.
stackoverflow.com/questions/35095372/how-to-get-different-count-of-key-php-array-to-table-and
То выводит все ключи подряд горизонтально, 2 - то выводит только один ключ у одинаковых товаров, а ключи должны быть разные, у товара-ленты - разное количество прокладок 2,3,4,5,6,8 и 3,4,5,6,8
Тут выложил код... готов отблагодарить материально срочно + потребуется умножить эту таблицу на ширину - это 19 параметров строго для каждого товара!!!!
$shirina = [180,200,250,300,350,400,450,500,550,600,650,800,900,1000,1100,1200,1400,1600,2000];
// ШИРИНА ЛЕНТЫ общий парам всех товаров
у меня на выходе должна получится примерно таблица
71 товар * 6(грубо говоря прокладок у каждого) * 19 значений ширины ИТОГО 8094 товара.
Потребуется мож еще какая доработка. Буду рад подкинуть вам халтуру, кто круто кодит на PHP пишите также в личку!) Спасибо

аватарка пользователя
2016-06-03
Андрей

Здравствуйте! Подскажите, пожалуйста, что за ошибка в коде?:
<?php
$dacha = array(
'овощи'=>array('картошка','помидоры','редька'),
'фрукты'=>array('ягоды'=>array('крыжовник','жимолость','малина'),'груши','яблоки')
);
foreach($dacha as $key => $vitamins)
{
echo "$key:";
echo '<ul>';
foreach($vitamins as $vid)
{
echo '<li>';
echo "$vid-";
echo '<ul>';
foreach($vid as $result)
{
echo "<li>$result</li>";
}
echo '</ul>';
echo '</li>';
}
echo '</ul>';
}
?>

А в браузере:
овощи:
картошка-

Warning: Invalid argument supplied for foreach() in Z:\home\localhost\www\PHPtrenajor\foreach.php on line 88
помидоры-

Warning: Invalid argument supplied for foreach() in Z:\home\localhost\www\PHPtrenajor\foreach.php on line 88
редька-

Warning: Invalid argument supplied for foreach() in Z:\home\localhost\www\PHPtrenajor\foreach.php on line 88
фрукты:
Array-
крыжовник
жимолость
малина
груши-

Warning: Invalid argument supplied for foreach() in Z:\home\localhost\www\PHPtrenajor\foreach.php on line 88
яблоки-

Warning: Invalid argument supplied for foreach() in Z:\home\localhost\www\PHPtrenajor\foreach.php on line 88
Тренируюсь после теории. Простые массивы выводить с foreach научился, а вот по сложнее - проблемка.

аватарка пользователя
2016-07-17
Александр.

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

аватарка пользователя
2016-08-25
Леша

$auto - основной многомерный массив, $value - его значения $brand и $inner_key - ключи
что такое параметр $massiv - совершенно не понятно. Что значит массивы? просто имя-связка для двух foreach?
Могу я с помощью этой конструкции перебрать двумерный массив? у меня выскаивает ошибка Invalid argument supplied for foreach()

аватарка пользователя
2017-05-28
Максим

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

аватарка пользователя
2018-09-13
Андрей

Спасибо за статью, очень помогла!

аватарка пользователя
2018-09-13
Андрей

Спасибо за статью, очень помогла!

аватарка пользователя
2020-02-09
к

спс

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