PHP уроки
ПРОСТО самая лучшая обучалка PHP!
  • Студия LPHPRU
  • Уроки PHP
  • Контакты
  • Помощь
Меню
  • PHP - с чего начать?
  • Уроки PHP
  • Функции PHP
  • Массивы
  • Denwer
  • MySQL
  • Информация
  • Dreamweaver уроки
  • JQuery уроки
Календарь
Июнь (2023)
ПнВтСрЧтПтСбВс
   1234
567891011
12131415161718
19202122232425
2627282930  

  • Что нового?

    • Тест №2
    • Тест №1 для разработчиков
    • PHP 5.6 RC1
    • SQL. Как cкопировать данные одной колонки в другую, в той же таблице
    • GRUB изменить порядок загрузки OS в Linux
    • SSH - вход на сервер без ввода пароля
    • PhpMyAdmin - проблема с загрузкой большого файла на сервер
  • Комментарии

    • тут нечего не понятно
    • Может уже пора на WebStorm переходит�...
    • Здравствуйте. 10 лет пользуюсь др�...
    • Была такая проблема, решалась пе�...
    • Возможно с течением времени этот...
  • TOP-5

    • Метод POST (2946433 )
    • Привет, МИР! (911226 )
    • Метод GET (667805 )
    • Операторы (606044 )
    • Firefox уже запущен, но не отвечает... (353682 )

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

Главная» Array » Двумерный массив
PHP урок № 303
Двумерный массив.
И так разберём, что такое двумерный массив и как он выглядит. Для тех кто не в теме, следует прочитать для начала урок посвящённый массивам вообще и одномерному массиву в частности.
Название урока Одномерный массив.
Сказать простым языком двумерный массив это массив, элементами которого выступают другие массивы с данными (массив в массиве). Кстати сказать вложенность массивов может быть не только двумерной, но на практике такое встречается крайне редко. Причина тому, затраты на обработку. Начиная работу с массивом на странице, скрипт загружает всё содержимое массива в оперативную память, тем самым процесс работы с таким массивом становится слишком ресурсоёмким, не оправданным. В таких случаях применяется база данных, за счёт чего происходит увеличение быстродействия.
Услуга системный администратор
Двумерный массив это по сути матрица, т.е. таблица с данными. Теперь посмотрим как это выглядит визуально, как создать двумерный массив.
Листинг № Array - Пример создания двумерного массива.
<?php
// массив Машины 
$m = array('Honda','Hummer','BMW','Toyota'); 

// массив Самолёты 
$s = array('AH','TU-144','Boing','СУ'); 

// массив Танки 
$t = array('Тигр','Пантера','Т-34','Аль Халид'); 

// массив Корабли 
$k = array('Кузнецов','Ямато','Ясень','Петропавловск'); 


// двумерный массив Техника 
$THN = array($m, $s, $t, $k);

?>
Пример из листинга № 1, достаточно наглядно показывает как формируется двумерный массив. Изначально создаётся одномерный массив, который в свою очередь, вкладывается в массив "Техника" $TH. таким образом уже массив $TH имеет в качестве значений своих ключей массивы. В этом примере мы создали не ассоциативный массив, просто для наглядности. Хотя для полной ясности содержимого при обходе массива, следует создать ассоциативный массив. Это такой массив в котором ключ это не числовое значение, задаваемое по умолчанию каждому элементу, а осмысленное название. Проще сказать именуем массив, согласно его содержимому.
Листинг № Array - Ассоциативный двумерный массив.
<?php 

// массив Машины
$m = array('Honda','Hummer','BMW','Toyota');

// массив Самолёты
$s = array('AH','TU-144','Boing','СУ');

// массив Танки
$t = array('Тигр','Пантера','Т-34','Аль Халид');

// массив Корабли
$k = array('Кузнецов','Ямато','Ясень','Петропавловск');


// двумерный массив Техника
$TH = array('Машины'=>$m, 'Самолёты'=>$s, 'Танки'=>$t, 'Корабли'=>$k);

?>
Теперь наш двумерный массив $TH имеет не просто числовой ключ для каждого входящего в него массива, а имя по которому можно определить содержание вложенного массива.
Обход двумерного массива.
Обход двумерного массива - есть не что иное, как последовательный перебор элементов массива. А в листинге ниже представлен код который ещё и выводит на монитор содержимое.
Листинг № Array - Обход двумерного массива
<?php
// обход двумерного массива
for($i=0; $i < count($THN); $i++)  
{ 
   

   for(
$q=0; $q < count($THN[$i]); $q++) 
   { 
     echo  
" » ".$THN[$i][$q];    
   } 
   echo 
"<br>"; 
} 

?>
На мониторе увидим следующее:
» Honda » Hummer » BMW » Toyota
» AH » TU-144 » Boing » СУ
» Тигр » Пантера » Т-34 » Аль Халид
» Кузнецов » Ямато » Ясень » Петропавловск
Это пример обхода, при котором двумерный массив является не ассоциативным, т.е. ключами двумерного массива выступают числа. Чтобы вывести на монитор содержимое ассоциативного массива, рассмотрим пример в листинге ниже.
Листинг № Array - Обход двумерного ассоциативного массива.
<?php

// Подсчитываем количество элементов в массиве
$sum = count($TH);

// Ассоциативный массив следует обходить, при помощи конструкции foreach 
foreach($TH as $key => $vol) 
{
   
// выводим название массива
   
echo $key ." -- ";
   
   
// обход
   
for($q=0; $q <= $sum; $q++)
   {
     echo 
" || ".$TH[$key][$q];   
   }
   echo 
"<br>";
}

?>
На мониторе увидим следующее:
Машины -- || Honda || Hummer || BMW || Toyota ||
Самолёты -- || AH || TU-144 || Boing || СУ ||
Танки -- || Тигр || Пантера || Т-34 || Аль Халид ||
Корабли -- || Кузнецов || Ямато || Ясень || Петропавловск ||
Ниже представлен пример упорядоченного вывода ассоциативного массива.
Листинг № Array - Обход двумерного массива и вывод в таблице.
<?php 

// массив Машины
$m = array('Honda','Hummer','BMW','Toyota');

// массив Самолёты
$s = array('AH','TU-144','Boing','СУ');

// массив Танки
$t = array('Тигр','Пантера','Т-34','Аль Халид');

// массив Корабли
$k = array('Кузнецов','Ямато','Ясень','Петропавловск');


// двумерный массив Техника
$TH = array('Машины'=>$m, 'Самолёты'=>$s, 'Танки'=>$t, 'Корабли'=>$k);


// Подсчитываем количество элементов в массиве
$sum = count($TH);

echo 
"<table>";
foreach(
$TH as $key => $vol) 
{
   
// выводим название массива
   
echo "<th>".$key ."</th>";
   
   
// обход
 
   
for($q=0; $q <= $sum; $q++)
   {
     echo 
"<tr><td>  ".$TH[$key][$q]."<td></tr>";   
   } 
}

echo 
"</table>";
?>
На мониторе увидим следующее:
Машины
Honda
Hummer
BMW
Toyota
Самолёты
AH
TU-144
Boing
СУ
Танки
Тигр
Пантера
Т-34
Аль Халид
Корабли
Кузнецов
Ямато
Ясень
Петропавловск
Из вышесказанного, можно сделать вывод, что по сути при выводе на монитор после обхода двумерного массива, вложенный массив выступает как строка таблицы с данными, что и формирует в свою очередь матрицу. Если мы изначально составим правильно вложенные массивы, то на выходе мы сможем получить таблицу с данными например анкетных данных, каждого работника. Рассмотрим ещё один пример, чисто матрица.
Листинг № Array - Обход двумерного массива, матрица.
<?php 

// массивы с данными на работников предприятия
$m = array('Александр','Новиков','35','ул. Новоясеневский проспект д. 7','125-89-63');
$s = array('Алексей','Бодров','28','ул. Астраханская д. 45','256-89-63');
$t = array('Николай','Хмельницкий','28','ул. Боровицкая д. 25','100-89-63');
$k = array('Олег','Нестеров','44','ул. Каховка д. 11','330-80-63');
$z = array('Олег','Нестеров','44','ул. Каховка д. 11','330-80-63');
$x = array('Олег','Нестеров','44','ул. Каховка д. 11','330-80-63');



// двумерный массив с данными о сотрудниках
$TH = array($m, $s, $t, $k, $z, $x);


// Подсчитываем количество элементов в массиве
$sum = count($TH);

echo 
"<table border='1' cellpadding='5'>
      <tr>
      <th>Имя</th><th>Фамилия</th><th>Возраст</th><th>Адрес</th><th>Телефон</th>
      </tr>"
;
for(
$i=0; $i <= $sum; $i++) 
{
  echo 
"<tr>";
  
$sum = count($TH[$i]);
   for(
$q=0; $q < $sum; $q++)
   {
     echo 
"<td>  ".$TH[$i][$q]."</td>";   
   }
   echo 
"</tr>";
}

echo 
"</table>";

?>
На мониторе увидим следующее:
ИмяФамилияВозрастАдресТелефон
Александр Новиков 35 ул. Новоясеневский проспект д. 7 125-89-63
Алексей Бодров 28 ул. Астраханская д. 45 256-89-63
Николай Хмельницкий 28 ул. Боровицкая д. 25 100-89-63
Олег Нестеров 44 ул. Каховка д. 11 330-80-63
Я думаю вы уже догадались, что список значений массива на каждого человека может быть бесконечно большим, не только имя, фамилия, возраст и т.д., можно продолжать в зависимости от надобности. И хотелось бы добавить, что конечно формирование массивов, т.е. занесение данных, происходить должно не вручную. В этом уроке приведены примеры, наглядно показывающие работу с двумерным массивом, а точнее с его содержимым.
Рекурсивный спуск. Рекурсивный обход массива.
Урок закончен.
Обсудить на форуме.
SETTER © LPHP.RU
Array
  • lphp.ru © 2009-2023