Урок 18. Способи перебору елементів масивів

При роботі з масивами в мові програмування php безліч завдань вирішується за допомогою перебору їх елементів. Для цього використовують розглянуті в минулих уроках циклічні конструкції (for, whilе…) або конструкцію foreach, яка була спеціально створена для роботи з масивами.

Давайте для початку розглянемо спосіб перебору масиву за допомогою циклу whilе:

<?php
$goroda = array (“Токіо”, “Пекін”, “Москва”);
$index = 0;
$elements = count ($goroda);
while ($index < $elements) {
echo $index+1 . “.” . $goroda[$index] . “<br>”;
$index++;
}
?>

У результаті роботи цього скрипта ми побачимо на екрані наступну інформацію:

1 . Токіо

2 . Пекін

3 . Москва

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

Спочатку створюється масив $goroda з 3 елементами:

$goroda [0] = “Токіо”,

$goroda [1] = “Пекін”,

$goroda [2] = “Москва”

Потім ініціалізуються 2 змінні: $index і $elements. Перша виступає ключем (індексом) для подальшого звернення всередині циклу до елементів масиву. Ця змінна одержала значення 0, так як індексація масивів у php починається з нуля.

Змінна $elements отримала значення, яке повернула вбудована функція count( ). Вбудована функція count() повертає кількість елементів масиву, ім’я якого задається в аргументі. У прикладі 3 елементи, тому значення $elements буде дорівнювати трьом.

Ітерація в циклі згідно з умовою виконується до тих пір, поки індекс елементів не буде дорівнювати максимальній кількості елементів у масиві (не забуваємо, що змінна $index дорівнює нулю, а не одиниці). На екран за допомогою команди echo виводиться результат операції конкатенації. Наприкінці виконується інкремент (збільшення змінної $index на одиницю). Не забувайте про цей нюанс, так як він дозволяє працювати з подальшими елементами масиву і забезпечує припинення роботи циклу, коли задана умова виконана .

Приклад виконання цієї ж задачі за допомогою циклу for:

<?php
$goroda = array (“Токіо”, “Пекін”, “Москва”);
for ($index = 0; $index < count ($goroda); $index++){
echo $index+1 . “.” . $goroda[$index] . “<br>”;
}
?>

Цикли зручно використовувати для перебору індексних масивів, так як виконуються операції з цілочисельними індексами. Це завдання також можна вирішити і за допомогою конструкції foreach. Всього є 2 способи запису даної конструкції:

foreach (назва_масива as $value)
якийсь вираз;
foreach (назва as $key => $value)
якийсь вираз;

Ключ елемента передається в змінну $key, значення в свою чергу присвоюється змінній $value. У той час як у першому варіанті запису доступно тільки значення елемента, у другому доступним є ще і його ключ. Приклад:

<?php
$goroda = array (“Токіо”, “Пекін”, “Москва”);
foreach ($goroda as $value){
echo $value . “<br>”;
}
?>

Найчастіше конструкцію foreach в php використовують для перебору асоціативних масивів. Розглянемо наступний приклад:

<?php
$goroda = array (
“login” => “Admin”,
“paswd” => “gh360D12lJ”,
“email” => “adm@somemail.com”,
“profession” => “php programmer”
);
foreach ($goroda as $key => $value){
echo $key . “:” . $value . “<br>”;
}
?>

У деяких випадках способи перебору елементів масиву комбінують. Давайте організуємо перебір елементів багатовимірного масиву:

<?php
$polzovateli = array (
0 => array (
“login” => “Admin”,
“paswd” => “gh360D12lJ”,
“email” => “adm@somemail.com”,
“profession” => “php programmer”
)
1 => array (
“login” => “Alex”,
“paswd” => “hd240lbDsA0”,
“email” => “alex@somemail.com”,
“profession” => “engineer”
)
2 => array (
“login” => “James”,
“paswd” => “lre54c0Sdv0f”,
“email” => “james@somemail.com”,
“profession” => “dancer”
)
);
echo “<table border=2>”;
echo “<tr><td>Логін</td><td>Пароль</td><td>E-mail</td><td>Професія</td></tr>”;
for ($index = 0; $index < count($polzovateli); $index++){
echo “<tr>”;
foreach ($polzovateli[$index] as $value){
echo “<td>” . $value . “</td>”;
}
echo “</tr>”;
}
echo “</table>”;
?>

Даний скрипт виведе на екран у вигляді зручної таблиці масив $polzovateli. Якщо Вам необхідно переглянути структуру і значення елементів масиву без красивого виводу, то використовуйте вбудовану функцію print_r( ). У неї наступний синтаксис:

bool print_r (mixed expression[, bool return]);

Приклад використання на практиці:

print_r ($polzovateli);

Рекомендуємо самостійно поексперементувати з даною php функцією.