
- •Лабораторная работа № 8 Массивы и списки в php.
- •1.1Массивы и списки.
- •1.1.1Понятие массива
- •1.1.2Понятие списка
- •1.2 Ассоциативные массивы
- •1.3 Инструкции list()
- •1.4 Инструкция array() и создание многомерных массивов
- •1.6Перебор массива
- •1.6.1Косвенный перебор
- •1.6.2Прямой перебор
- •1.6.3Недостатки косвенного перебора
- •1.7 Сортировка массивов
- •1.7.1Сортировка массивов по ключам. Функции ksort() и krsort()
- •1.7.2Сортировка списка
- •1.7.3Переворачивание массива.
- •1.7.4Перемешивание списков.
- •1.7.5Пользовательская сортировка массивов
- •1.8Получение части массива
- •1.9Добавление и удаление элементов массива
- •1.9.1Добавление в конец массива
- •1.9.2Удаление последнего элемента списка
- •1.9.3Добавление в начало списка. Удаление первого элемента списка
- •1.9.4Функция array_unique()
- •1.10Переменные и массивы. Взаимные переходы
- •1.10.1 Упаковка переменных в массив. Функция compact()
- •1.10.2 Разупаковка (извлечение) переменных из массива.
- •1.11Создание диапазона чисел
- •1.12Небольшой практический пример
- •1.13Задание
1.12Небольшой практический пример
Попробуем написать сценарий, выводящий содержимое каталога. Причем сценарий должен не просто выводить содержимое каталога, а в алфавитном порядке и каталоги должны предшествовать файлам (см. листинг 2). Мы будем использовать ранее написанную и приведенную в листинге 1 функцию стр(), которая сравнивает файлы и каталоги.
Листинг 2. Сценарий files,php
<?
// Получаем содержимое текущего каталога. Для нашего сценария
текущим будет каталог /var/www/html
// ($DocumentRoot)
exec("Is -1",$Files);
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;
}
uasort ($Files,"cmp");
echo "<html><title>Cцeнapий files.php</titlexbody>";
echo "<Ь1>Содержимое каталога /</hlXp>";
foreach($Files as $f)
if (is_dir($f)) echo "<br><img src=folder.png>$f";
else echo "<brximg src=doc.png>$f";
echo "</bodyX/html>";
?>
Разберемся, как работает сценарий. Сначала мы формируем список файлов и каталогов. Можно было бы воспользоваться стандартными функциями PHP, но намного проще (в Linux) вызвать команды Is с параметром -1 (вывод в одну колонку). Функция ехес() вызывает команду Is и записывает ее вывод в список $Files. Потом мы вызываем функцию uasort(), которая сортирует наш список в нужном нам порядке — сначала она сортирует каталоги в алфавитном порядке, а затем — файлы. В результате мы получаем список, в котором сначала идут каталоги, отсортированные по алфавиту, а затем — файлы (тоже отсортированные по алфавиту). В цикле foreach мы анализируем элемент нашего списка: если он является каталогом, мы выводим рядом с его именем картинку папки, а если файлом — картинку документа (см. рис. 1).
Рис. 1. Результат работы сценария files.php
1.13Задание
На примере показать отличие массива и списка. Посчитать количество символов в массиве(если массивов несколько, то в первом).
Заполнить два массива, соответственно, случайными целыми числами в диапазоне от -20 до 30. Из полученных двух массивов создать два массива отдельно отрицательных и положительных чисел. Для контроля результата сделать распечатку массивов, в том числе исходного.
Заполнить два массива случайным образом буквами латинского алфавита. Заполнить третий массив теми буквами, которые входят и в первый и во второй массив, четвертый - оставшимися буквами из первого и второго. Для контроля результата сделать распечатку массивов, в том числе исходного.
Заполнить массив случайным образом, выделить в отдельные массивы буквы латинского алфавита, как заглавные, так и прописные.Для контроля результата сделать распечатку массивов, в том числе исходного.
Заполнить массив случайным образом в диапазоне от -20 до 20,посчитать среднее всех элементов массива. Все элементы массива, которые меньше среднего значения на 50% заменить на среднее значение. Для контроля результата сделать распечаткумассивов, в том числе исходного.
В исходном массиве (размер 30 элементов), заполненный цифрами случайным образом, замените все повторные вхождения цифр на 0, а все оставшиеся элементы массива поместить в отдельный массив. Для контроля результата сделайте распечатку массивов, в том числе исходного.
Заполните случайным образом 2 массива ( по 20 элементов) поочередно цифрами 1 от до 4 и цифрами от 5 до 9. Объедините эти массивы. Найдите среднее всех элементов массива. Для контроля результата сделайте распечатку массивов, в том числе исходного.
В исходном массиве символов, заполненном случайным образом символами с кодами в диапазоне от 21 до 254, выделить в отдельные массивы строчные буквы латинского алфавита. Для контроля результата сделать распечатку массивов, в том числе исходного.
Дан массив символов. Ввод массива производить с клавиатуры. Отсортировать массив таким образом, чтобы символы входили в массив по алфавитному порядку. Для контроля результата сделать распечат- ку массивов, в том числе исходного.
Дано 2 массива символов. Ввод массивов производить с клавиатуры. Символы, повторяющиеся в 1 и 2 массиве поместить в 3 массив. Для контроля результата сделать распечатку массивов, в том числе исходного.
В исходном массиве (размер 20 элементов), ввод массива производить с клавиатуры, посчитать среднее всех элементов массива. Замените все элементы массива, которые больше среднего значения, на 0, а все оставшиеся элементы массива поместить в отдельный массив. Для контроля результата сделайте распечатку массивов, в том числе исходного.
Введите с клавиатуры текст в массив символов. Определите какие из слов в массиве состоят из букв с возрастающими кодами. Разместите эти слова в отдельный массивы. Для контроля результата сделайте распечатку массивов, в том числе исходного.
Из исходного массива символов, текст вводить с клавиатуры, символами с кодами в диапазоне от 21 до 254, выделить в отдельные массивы символы цифр. Для контроля результата сделать распечатку массивов, в том числе исходного.
Заполнить два массива, размером 20 и 30 элементов, соответственно, случайными целыми числами в диапазоне от -50 до 50. Из полученных двух массивов создать два массива отдельно, один из которых содержит числа от -10 до 0, а другой - от 40 до 50. Для контроля результата сделать распечатку массивов, в том числе исходного.
Заполните случайным образом массив (30 элементов) поочередно буквами латинского алфавита от A до H и цифрами 1 от до 5. Посчитать среднее значение всех элементов 2 массива. Заменить в 1 массиве каждый второй элемент на это значение. Для контроля результата сделайте распечатку массивов, в том числе исходного.
Заполнить два массива размером 20 и 30 элементов, ввод массивов производить с клавиатуры. Заполнить третий массив теми числами, которые входят и в первый и во второй массив, четвертый - оставшимися числами из первого и второго .Для контроля результата также сделать распечатку массивов, в том числе исходного.