- •Понятие массива
- •Понятие списка
- •2. Ассоциативные массивы
- •3. Инструкции list()
- •4. Инструкция array() и создание многомерных массивов
- •5. Операции над массивами
- •5.1. Удаление массивов
- •5.3. Перебор массива
- •Косвенный перебор
- •Прямой перебор
- •Недостатки косвенного перебора
- •6. Сортировка массивов
- •Сортировка массивов по ключам. Функции ksort() и krsort()
- •Сортировка списка
- •7. Получение части массива
- •8. Добавление и удаление элементов массива
- •Добавление в конец массива
- •Удаление последнего элемента списка
- •9. Переменные и массивы. Взаимные переходы
- •Упаковка переменных в массив. Функция compact()
- •10. Создание диапазона чисел
- •11. Небольшой практический пример
- •Задание
Предположим, что у нас есть список файлов и каталогов — $Files: Нам нужно вывести сначала каталоги, а потом файлы. Сравнение будет изводиться функцией Стр, которую мы сами и напишем (см. листинг Подробнее о создании и использовании пользовательских функций; можете прочитать в гл. 8.
Листинг 1. Функция сравнения Стр
function cmp ($el_l,$el_2)
{
// Сначала каталог, а потом - файл
if (is_dir($el_l) && !is_dir($el_2)) return -1; if ( ! is_dir($el_l) && is_dir($el_2) ) return 1;
// Сравниваем по алфавиту if ($el_K$el_2) return -1;
elseif ($el_l>$el_2) return 1; else return 0;
}
Теперь вызовем функцию uasortQ: uasort ($FilesNDirs,"cmp") ;
Примечание. В данном случае мы используем uasort() потому, что у нас простой список а не ассоциативный массив. В последнем случае нужно было использовать;
функцию uksort()
Функция uasort() аналогична функции uksortQ, только она сортирует не ключи, как uksort, а значения. Обе функции — uksortQ и uasortQ — сохраняют пары ключ=>значение. Функция usortQ похожа на функцию sort(), но критерий сортировки задается пользовательской функцией, которая передается в качестве второго параметра.
Еще одна важная особенность этой функции заключается в том, что она не сохраняет пару ключ=>значение, поэтому пригодна лишь для сортировки списков, но ее ни в коем случае не нужно использовать для сортировки ассоциативных массивов.
7. Получение части массива
Для получения части массива используется функция array_slice(). Ей нужно передать три параметра:
*имя исходного массива, из которого будут выбираться элементы;
*смещение от начала массива, то есть сколько элементов от начала массива надо пропустить перед началом выборки;
*длина, то есть количество элементов, которое нужно выбрать из исходного
массива.
Данная функция возвращает часть указанного массива, начиная с указанного смещения от начала массива. Выборка элементов осуществляется подряд. Длина результирующего массива задается параметром Длина, который является необязательным. Если этот параметр не указан, то" выборка элементов осуществляется до конца исходного массива.
Вот небольшие примеры:
$А = array(xox, ror, tot, pop, mom); // задаем исходный массив $В = array_slice($А,2); // получаем массив $В,
//в котором содержатся
//все элементы массива $А,
//начиная с третьей позиции
//(т.к. два надо пропустить).
//Таким образом, массив $В
//будет содержать элементы
//tot, pop, mom.
$В = array_slice($A, 0,2) ; // Получаем массив $В, в котором
//содержатся два элемента
//массива $А, начиная с первого
//(т.к. надо пропустить О
//элементов) . Таким образом,