- •Понятие массива
- •Понятие списка
- •2. Ассоциативные массивы
- •3. Инструкции list()
- •4. Инструкция array() и создание многомерных массивов
- •5. Операции над массивами
- •5.1. Удаление массивов
- •5.3. Перебор массива
- •Косвенный перебор
- •Прямой перебор
- •Недостатки косвенного перебора
- •6. Сортировка массивов
- •Сортировка массивов по ключам. Функции ksort() и krsort()
- •Сортировка списка
- •7. Получение части массива
- •8. Добавление и удаление элементов массива
- •Добавление в конец массива
- •Удаление последнего элемента списка
- •9. Переменные и массивы. Взаимные переходы
- •Упаковка переменных в массив. Функция compact()
- •10. Создание диапазона чисел
- •11. Небольшой практический пример
- •Задание
$С = $А + $В; // $С = аггау(10,11,12),
$С = array_merge($A,$B); // $С = array(10,11,12,15,17,18);
Таким образом, функцию array_merge() очень удобно использовать для слияния списков.
5.3. Перебор массива
Для перебора массивов в PHP можно использовать два метода:
*косвенный перебор;
*прямой перебор.
Косвенный перебор
Принцип косвенного перебора заключается в том, что сначала вычисляется очередной индекс (ключ), а затем по этому индексу косвенно находится значение элемента массива.
Например:
$Реор1е[0]="Коля"; $Реор1е[1]="Витя"; $Реор1е[2]="Дима";
for ($i=0; $i<count ($People); $i++) echo "$People[$i] <br>";
Это мы с вами перебрали список, индексами которого являются целые числа. Для этого мы использовали цикл for, в котором перебирали индексы последовательно увеличивая их на 1, и по индексам получи, элементы массива. Однако, что делать, если нам нужно перебрать не список, а ассоциативный массив? Ведь в ассоциативном массиве индексе (ключом) является не число, а строка:
$Реор1е["Иванов"] = "Иван"; $Реор1е["Сидоров" ] = "Николай"; $Реор1е["Петров" ] = "Петр";
Выполнить перебор такого массива поможет следующий цикл:
for(ReSet($People); ($k = key($People)); Next($People)) echo "$k = $People[$k] <br>";
Здесь функция Reset() устанавливает текущий элемент массива SPeople[] на первую позицию, как бы «перематывает» массив на начало. Функция key() возвращает ключ текущего элемента. Если нет больше элементов в массиве, то эта функция возвратит 0, и цикл прекратит свою работу. Функция Next() перемещает текущий элемент на одну позицию вперед (то есть переходит к следующему элементу массива).
В теле цикла можно также использовать функцию currentQ, которая возвращает значение текущего элемента. С использованием этой функции вышеприведенный цикл можно переписать так:
for(Reset($People); ($k = key($People)) ; Next ( $People)) echo "$k =".current($People)."<br>";
До сих пор мы перебирали ассоциативный массив с начала в конец. Тем не менее, в PHP имеется возможность перебора такого массива и с конца.
При этом вам лишь надо использовать функции EndQ и Prev(), вместо функций ResetQ и NextQ. Первая из них устанавливает текущий элемент в конец массива, а вторая перемещает текущий элемент на одну позицию назад (то есть переходит к предыдущему элементу):
for(End($People); ($k = key($People)); Prev($People)) echo "$k = {$People[$k]} <br>";
Прямой перебор
Принцип прямого перебора заключается в том, чтобы при каждой итерации цикла одновременно получать и ключ, и значение текущего элемента массива. Для прямого