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