Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
IT_Laboratornaya_rabota_8_rnr.doc
Скачиваний:
0
Добавлен:
02.01.2020
Размер:
145.41 Кб
Скачать

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Задание

На примере показать отличие массива и списка. Посчитать количество символов в массиве(если массивов несколько, то в первом).

  1. Заполнить два массива, соответственно, случайными целыми числами в диапазоне от -20 до 30. Из полученных двух массивов создать два массива отдельно отрицательных и положительных чисел. Для контроля результата сделать распечатку массивов, в том числе исходного.

  2. Заполнить два массива случайным образом буквами латинского алфавита. Заполнить третий массив теми буквами, которые входят и в первый и во второй массив, четвертый - оставшимися буквами из первого и второго. Для контроля результата сделать распечатку массивов, в том числе исходного.

  3. Заполнить массив случайным образом, выделить в отдельные массивы буквы латинского алфавита, как заглавные, так и прописные.Для контроля результата сделать распечатку массивов, в том числе исходного.

  4. Заполнить массив случайным образом в диапазоне от -20 до 20,посчитать среднее всех элементов массива. Все элементы массива, которые меньше среднего значения на 50% заменить на среднее значение. Для контроля результата сделать распечаткумассивов, в том числе исходного.

  5. В исходном массиве (размер 30 элементов), заполненный цифрами случайным образом, замените все повторные вхождения цифр на 0, а все оставшиеся элементы массива поместить в отдельный массив. Для контроля результата сделайте распечатку массивов, в том числе исходного.

  6. Заполните случайным образом 2 массива ( по 20 элементов) поочередно цифрами 1 от до 4 и цифрами от 5 до 9. Объедините эти массивы. Найдите среднее всех элементов массива. Для контроля результата сделайте распечатку массивов, в том числе исходного.

  7. В исходном массиве символов, заполненном случайным образом символами с кодами в диапазоне от 21 до 254, выделить в отдельные массивы строчные буквы латинского алфавита. Для контроля результата сделать распечатку массивов, в том числе исходного.

  8. Дан массив символов. Ввод массива производить с клавиатуры. Отсортировать массив таким образом, чтобы символы входили в массив по алфавитному порядку. Для контроля результата сделать распечат- ку массивов, в том числе исходного.

  9. Дано 2 массива символов. Ввод массивов производить с клавиатуры. Символы, повторяющиеся в 1 и 2 массиве поместить в 3 массив. Для контроля результата сделать распечатку массивов, в том числе исходного.

  10. В исходном массиве (размер 20 элементов), ввод массива производить с клавиатуры, посчитать среднее всех элементов массива. Замените все элементы массива, которые больше среднего значения, на 0, а все оставшиеся элементы массива поместить в отдельный массив. Для контроля результата сделайте распечатку массивов, в том числе исходного.

  11. Введите с клавиатуры текст в массив символов. Определите какие из слов в массиве состоят из букв с возрастающими кодами. Разместите эти слова в отдельный массивы. Для контроля результата сделайте распечатку массивов, в том числе исходного.

  12. Из исходного массива символов, текст вводить с клавиатуры, символами с кодами в диапазоне от 21 до 254, выделить в отдельные массивы символы цифр. Для контроля результата сделать распечатку массивов, в том числе исходного.

  13. Заполнить два массива, размером 20 и 30 элементов, соответственно, случайными целыми числами в диапазоне от -50 до 50. Из полученных двух массивов создать два массива отдельно, один из которых содержит числа от -10 до 0, а другой - от 40 до 50. Для контроля результата сделать распечатку массивов, в том числе исходного.

  14. Заполните случайным образом массив (30 элементов) поочередно буквами латинского алфавита от A до H и цифрами 1 от до 5. Посчитать среднее значение всех элементов 2 массива. Заменить в 1 массиве каждый второй элемент на это значение. Для контроля результата сделайте распечатку массивов, в том числе исходного.

  15. Заполнить два массива размером 20 и 30 элементов, ввод массивов производить с клавиатуры. Заполнить третий массив теми числами, которые входят и в первый и во второй массив, четвертый - оставшимися числами из первого и второго .Для контроля результата также сделать распечатку массивов, в том числе исходного.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]