Файл: Практична робота 9.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 20.05.2024

Просмотров: 15

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Практична робота №9

Тема: Двовимірні Масиви.

Мета: ознайомитися з правилами і особливостями обробки дво- і багатовимірних впорядкованих послідовностей даних. Отримати практичні навички використання стандартних функцій опрацювання масивів і створити відповідні скрипти.

Теоретичний розділ

В цій роботі розберемо, що таке двовимірний масив і як він виглядає.

Ініціалізація двовимірного масиву

Сказати простою мовою двовимірний масив це масив, елементами якого виступають інші масиви з даними (масив в масиві). До речі сказати вкладеність масивів може бути не тільки двовимірною, але на практиці таке зустрічається вкрай рідко. Причина тому, витрати на обробку. Починаючи роботу з масивом на сторінці, скрипт завантажує весь вміст масиву в оперативну пам'ять, тим самим процес роботи з таким масивом стає занадто ресурсоємним, що не є виправданим. У таких випадках застосовується база даних, за рахунок чого відбувається збільшення швидкодії.

Двовимірний масив це по суті матриця, тобто таблиця з даними. Тепер подивимося як це виглядає візуально, як створити двовимірний масив.

Лістинг № 1 - Приклад створення двовимірного масиву.

<?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 має в якості значень своїх ключів масиви. У цьому прикладі було створено не асоціативний масив, просто для наочності. Хоча для повної ясності вмісту при обході масиву, слід створити асоціативний масив. Це такий масив в якому ключ це не числове значення, що задається за замовчуванням кожному елементу, а осмислена назва. Простіше сказати іменуємо масив, згідно його вмісту.

Лістинг № 2 - Асоціативний двовимірний масив.

<?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 має не просто числовий ключ для кожного вхідного в нього масиву, а ім'я по якому можна визначити зміст вкладеного масиву.

Обхід двовимірного масиву.

Обхід двовимірного масиву - є не що інше, як послідовний перебір елементів масиву. А в лістингу нижче представлений код який ще й виводить на монітор вміст.

Лістинг № 3 - Обхід двовимірного масиву

<?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» Ту-144 »Boing» СУ

»Тигр» Пантера »Т-34» Аль Халід

»Кузнєцов» Ямато »Ясень» Петропавловськ

Це приклад обходу, при якому двовимірний масив є не асоціативним, тобто ключами двовимірного масиву виступають числа. Щоб вивести на монітор вміст асоціативного масиву, розглянемо приклад в лістингу нижче.

Лістинг № 4 - Обхід двовимірного асоціативного масиву.

<?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 || Аль Халід ||

Кораблі -- || Кузнєцов || Ямато || Ясень || Петропавловск ||

Нижче наведено приклад впорядкованого виведення асоціативного масиву.

Лістинг № 5 - Обхід двумірного масиву і виведення в таблиці.

<?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

Аль Халід

Корабли

Кузнєцов

Ямато

Ясень

Петропавловск

З вищесказаного, можна зробити висновок, що по суті при виведенні на монітор після обходу двовимірного масиву, вкладений масив виступає як рядок таблиці з даними, що й формує в свою чергу матрицю. Якщо спочатку скласти правильно вкладені масиви, то на виході зможемо отримати таблицю з даними наприклад анкетними, кожного працівника. Розглянемо ще один приклад, матрицю.

Лістинг № 6 - Обхід двовимірного масиву, матриця.

<?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

Контрольні питання

  1. Дайте визначення масиву даних.

  2. Чим, на вашу думку, одновимірні масиви різняться від багатовимірних? Наведіть приклад.

  3. Якою може бути ступінь вкладеності масивів в РНР? Чим вона обмежується?

  4. Яким чином можна замінити велику ступінь вкладеності?

  5. Що таке асоціативний масив даних?

  6. Що таке неасоціативний масив даних?

  7. Порівняйте два описаних вище типи масивів. Де і коли доцільніше використовувати кожен з них?