Обработка массивов

Функция sort() предназначена для сортировки элементов массивов. Она возвращает массив отсортированных элементов исходного массива, не воздействуя при этом на сам исходный массив. По умолчанию сортировка осуществляется с учетом алфавитного порядка (точнее говоря, порядка следования символов в таблице кодов ASCII).
@array = (1, 2, 10);
@new_array = sort(@array); # Массив @new_array будет содержать
# следующие элементы: 1, 10, 2
Порядок сортировки можно изменить.
@array = (1, 2, 10);
@new_array = sort({$a <=> $b} @array); # Массив @new_array будет
# содержать следующие элементы:
# 1, 2, 10 (сортировка чисел по
# возрастанию)
@array = (1, 2, 10);
@new_array = sort({$b <=> $a} @array); # Массив @new_array будет
# содержать следующие элементы:
# 10, 2, 1 (сортировка чисел по
# убыванию)
@array = (1, 2, 10);
@new_array = sort({$b cmp $a} @array); # Массив @new_array будет
# содержать следующие элементы:
# 2, 10, 1 (сортировка строковых
# значений в порядке, обратном
# алфавитному)
Функция reverse() инвертирует (сортирует в обратном порядке) элементы исходного массива, возвращая новый результирующий массив. Пример использования этой функции:
@array = ('понедельник', 'вторник', 'среда', 'четверг',
? 'пятница', 'суббота', 'воскресенье');
@new_array = reverse(@array); # массив @new_array будет содержать
# названия дней недели в обратном порядке:
# 'воскресенье', 'суббота', 'пятница',
# 'четверг', 'среда', 'вторник',
# 'понедельник'
Функции push() и pop() позволяют работать с массивом как со стеком, т. е. структурой данных, организованной по принципу LIFO (Last In — First Out, последним пришел — первым ушел).
Так, функция push() добавляет элемент или массив элементов в конец массива:
@array = (); # Пустой массив
push(@array, 1..9); # Содержимое массива @array: 1, 2, 3, 4, 5,
# 6, 7, 8, 9
push(@array, 10); # Содержимое массива @array: 1, 2, 3, 4, 5,
# 6, 7, 8, 9, 10
Функция pop(), в свою очередь, удаляет последний элемент массива и возвращает его значение:
@array = (1..10);
$value = pop(@array); # Содержимое массива @array: 1, 2, 3, 4, 5,
# 6, 7, 8, 9. Содержимое переменной $value: 10
Действие функции shift() похоже на действие функции pop(), только функция shift() удаляет элемент не из конца, а из начала массива:
@array = (1..10);
$value = shift(@array); # Содержимое массива @array: 2, 3, 4, 5,
# 6, 7, 8, 9, 10. Содержимое переменной
# $value: 1
Функция unshift() аналогична функции push(), но также добавляет элементы не в конец, а в начало массива.
@array = (1..9);
unshift(@array, 10); # Содержимое массива @array: 10, 1, 2, 3, 4, 5,
# 6, 7, 8, 9
Функция scalar() возвращает количество элементов массива:
@array = (0..9);
$qty = scalar(@array); # Значение переменной $qty: 10
Цикл foreach
Для того, чтобы тем или иным образом обработать в цикле все элементы того или иного массива, мы могли бы использовать конструкцию, аналогичную следующей:
for($i = 0; $i < scalar(@array); $i++)
{
print "$array[$i]\n";
}
Perl, однако, предусматривает более элегантный оператор цикла foreach. С его использованием эквивалент вышеприведенного листинга выглядел бы следующим образом:
foreach $element(@array)
{
print "$element\n";
}
Область видимости переменной $element ограничивается телом цикла.


© 2008-2018 ОптимизацияВебСайтов.ру


Любое использование текстового и графического контента сайта без активной ссылки на источник не доскается.