При работе с массивами в языке программирования 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 функцией.
Таблица лучших: 2. Способы перебора элементов массивов
Место | Имя | Записано | Баллы | Результат |
---|---|---|---|---|
Таблица загружается |