Способы перебора элементов массива

May 4, 2010 by admin Комментировать »

В программировании на языке РНР множество задач по работе с массивами ре­шается путем перебора их элементов. Для этого можно использовать уже известные вам циклические конструкции (while, for. . .) или специальную конструкцию foreach. которая создана специально для работы с массивами.

Для начала рассмотрим пример перебора массива с помощью цикла while.

<?php

$countries = array("Россия","Украина","Беларусь"); $index = 0;

$eleinents = count ($countries) ; while ($index < $elements) {

echo $index+l . ". " . $countries[$index] . "<br>";

$index++;

}

?>

Результатом выполнения данного скрипта будет вывод на экран следующих данных.

1. Россия

2. Украина

3. Беларусь

Вероятно, В приведенном выше РНР-коде вы встретили несколько незнакомых или непонятных моментов. Чтобы все стало понятно, рассмотрим этот код детально. Сначала был создан массив $countries с тремя элементами.

$countries[0] = "Россия", Scountries[1] = "Украина", $countries[2] = "Беларусь"

Затем инициализированы две переменные: $index и $eleinents. Переменная $ index служит индексом (ключом) для последующего обращения к элементам мас­сива внутри цикла. А так как индексация массивов начинается с нуля, этой пере­менной было присвоено значение 0.

Переменной $elements присваивается значение, возвращаемое встроенной функ­цией count (). Функция count () (подробнее о встроенных функциях будет сказано позже) вычисляет и возвращает количество элементов массива, имя которого пере­дается ей в качестве аргумента. В нашем примере это число равно трем, соответст­венно значение Selements также равно трем.

В условии выполнения цикла указано, что итерации продолжаются до тех пор, пока индекс элементов не сравняется с максимальным количеством элементов в перебираемом массиве (не забывайте, что $index изначально равно О, а не 1). До этих пор с помощью команды echo на экран выводится результат операции конкатенации. В завершение происходит инкремент (увеличение на единицу) пе­ременной $ index. Этот момент важно не пропустить, так как он не только обеспе­чивает работу со следующим элементом массива в будущей итерации, но и позволя­ет прекратить работу цикла при выполнении заданного условия.

Ту же задачу можно решить и с помощью цикла for.

<?php

$countries = array("Россия","Украина","Беларусь"); for ($index=0; $index < count($countries); $index++) { echo $index+l . ". " . $countries[$index] . "<br>";

}

?>

Циклы удобны для перебора индексных массивов, так как такой перебор осно­ван на операциях с целочисленными индексами. Для решения той же задачи мож­но воспользоваться конструкцией foreach. Существует два вида записи этой кон­струкции.

foreach (имя_массива ае $value)

выражение; foreach (имя as $кеу "> $value)

выражение;

В переменную $кеу передается ключ элемента, а переменной $value присваи­вается его значение. Соответственно в первом варианте записи будет доступно только значение элемента, а во втором — еще и его ключ. Рассмотрим пример.

<?php

$countries = array("Россия","Украина","Беларусь"); foreach ($countries $value) { echo $value . "<br>";

}

?>

Однако лучше всего конструкция foreach подходит для перебора ассоциатив­ных массивов. Рассмотрим пример.

<?php

$countries = array(

"login" => "Administrator", "password" => "TrlQlsMN23cd", "email" => "admineexample.com", "occupation" => "web programmer"

);

foreach ($countries as $key => $value) { echo Skey . ": " . Svalue . "<br>";

}

?>

Варианты перебора элементов массива можно комбинировать. Для демонстра­ции вернемся, например, к многомерному массиву и организуем перебор его эле­ментов.

<?php

$users = array {

0 => array (

"login" => "Administrator", "password" => "TrlQlsMN23cd", "email" => "admineexemple.com", "occupation" => "web prograuraner"

).

1 => array (

"login" => "John", "password" => "12345", "email" => "john@example.com", "occupation" => "sales manager"

),

2 => array (

"login" => "Jane", "password" => "123",

"email" => "prettyjane@example.com’, "occupation" => "secretary"

)

),-

echo "<table border=l>";

echo "<tr><td>Лoгин</td><td>Пapoль</td><cd>E-mai1</td><td>npoieccM«</tdx/tr>";

for ($index=0; $index < count($users); $index++) { echo "<tr>";

foreach ($users[$index] as $value) { echo "<td>" . $value . "</td>",-

)

echo "</tr>";

}

echo "</table>"; ?>

Этот код выводит на экран массив Susers в виде удобочитаемой таблицы. Если существует необходимость просто просмотреть структуру и значения элементов массива без организации "красивого" вывода, можно воспользоваться встроенной функцией print_r (). Формат ее записи следующий.

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

Ha практике это выглядит так.

print_r($users);

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты