При роботі з масивами в мові програмування 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 функцією.