Приднестровская поддержка XOOPS
Для перебора массивов применяются три вида циклов: 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>
Как видно из примера, мы не получили значение элемента с индексом 3. Для перебора ассоциативного массива такой способ не подходит, так как индексом является не число, а строка. Вместо этого применяются другие конструкции, например:
$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>';
}
Разумеется, цикл for можно употреблять не только для работы с массивами,
но и для других целей. А вот цикл foreach предназначен исключительно для
работы с массивами. Он позволяет работать как с обычными массивами, на-
пример:
$Mass[] = 'Один';
$Mass[] = 'Два';
$Mass[] = 'Три';
$Mass[] = 'Четыре';
foreach ($Mass as $key) {
echo $key . '<br>';
}
так и с ассоциативными:
$Mass['Один'] = 1;
$Mass['Два'] = 2;
$Mass['Три'] = 3;
$Mass['Четыре'] = 4;
foreach ($Mass as $key => $value) {
echo $key . ' => ' . $value . '<br>';
}
Цикл while также может использоваться для работы с массивами. Обычно
это делается с использованием сочетания функций list() и each():
$Mass[] = 'Один';
$Mass[] = 'Два';
$Mass[] = 'Три';
$Mass[] = 'Четыре';
while (list(, $value) = each($Mass)) {
echo $value . '<br>';
}
$Mass['Один'] = 1;
$Mass['Два'] = 2;
$Mass['Три'] = 3;
$Mass['Четыре'] = 4;
while (list($key, $value) = each($Mass)) {
echo $key . ' => ' . $value . '<br>';
}
Функция each() возвращает текущий элемент массива (пару "ключ /значение"), после чего перемещает указатель.
Отправитель | Нити |
---|
14 пользователь(ей) активно (12 пользователь(ей) просматривают Инструкции)
Участников: 0 Гостей: 14 далее... |