Для перебора массивов применяются три вида циклов:
for, foreach и while.
Цикл for используется, так:
$Mass[] = 'Один';
$Mass[] = 'Два';
$Mass[] = 'Три';
$Mass[] = 'Четыре';
$count = count($Mass);
for ($i=0; $i<$count; $i++) {
echo $Mass[$i] . '<br>';
}
Следует с осторожностью пользоваться циклом for, так как функция count()
возвращает количество существующих элементов массива. Если элемент не
определен, то он не учитывается в подсчете. Например, следующий код вы-
ведет не все элементы массива:
// Отключаем вывод предупреждающих сообщений
error_reporting(E_ALL & ~E_NOTICE);
$Mass[1] = 'Один';
$Mass[2] = 'Два';
$Mass[3] = 'Три';
echo count($Mass); // Выведет: 3
echo '<br>';
$count = count($Mass);
for ($i=0; $i<$count; $i++) {
echo $Mass[$i] . '<br>';
} // Выведет: <br><br>Один<br>Два<br>
Для перебора ассоциативного массива такой способ не подходит, так как ин-
дексом является не число, а строка. Вместо этого применяются другие конст-
рукции, например:
$Mass['Один'] = 1;
$Mass['Два'] = 2;
$Mass['Три'] = 3;
$Mass['Четыре'] = 4;
for (reset($Mass); ($key = key($Mass)); next($Mass)) {
echo $key . ' => ' . $Mass[$key] . '<br>';
}
Здесь мы воспользовались следующими функциями:
reset() устанавливает указатель на первый элемент массива;
next() перемещает указатель на один элемент массива вперед;
key() возвращает ключ текущего элемента массива.
Для перебора элементов ассоциативного массива в обратном порядке надо
использовать другие функции:
end() устанавливает указатель на последний элемент массива;
prev() перемещает указатель на один элемент массива назад.
Для получения текущего значения элемента массива можно использовать
функцию current():
$Mass['Один'] = 1;
$Mass['Два'] = 2;
$Mass['Три'] = 3;
$Mass['Четыре'] = 4;
for (reset($Mass); ($key = key($Mass)); next($Mass)) {
echo $key . ' => ' . current($Mass). '<br>';
}
Комментариев нет:
Отправить комментарий