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

  1. В HTML форме пользователь вводит строки текста. После нажатия клавиши кнопки ГОТОВО запускается PHP скрипт, в котором напишите функцию, которая в качестве аргументов получает эти три строки и формирует из них таблицу с тремя ячейками.

    1. Выше таблицы предусмотрите бегущую строку с текстом первой строки.

  2. В HTML форме пользователь вводит три число a,b и с и после нажатия клавиши кнопки ГОТОВО запускается PHP скрипт, который решает квадратное уравнение: ax2+bx+c=0. Для этого в скрипте предусмотрите функцию, которая получает три аргумента (a,b и c) и возвращает значение дискриминанта D=b2-4ac. Далее в самой программе проверяется значение функции и в зависимости от ее значения рассчитывается 2 или 1 корень, или выводится сообщение «корней нет». Напоминаю, корни рассчитываются по формуле.

Например, при вводе 2, -5 , 2 корни должны выйти 2 и 0.5, при 1, 2, 1 корень –1 и т.п.

    1. Дополнительно проверьте, что a¹0, и если это не так, выведите сообщение.

  1. Создайте функцию, которая в качестве параметров принимает два числа и выводит первое число в степени второго. Если второе число не задано, число должно выводится в первой степени.

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

    1. Сделайте таблицу размером 2 на 2.

  1. Массивы.

Индексом массива в PHP может быть как целое число (по умолчанию отсчет элементов начинается как обычно с нуля), так и строка. Массивы в PHP могут содержать элементы нескольких разных типов.

Для инициализации массива существуют несколько способов. Один из способов Вам уже знаком:

$massiv[0] = "first";

$massiv[1] = "second";

$massiv[2] = "third";

Но то же самое Вы могли бы провернуть и другим способом.

$massiv[] = "first";

$massiv[] = "second";

$massiv[] = "third";

Данный код создаст массив из трех элементов, и даст индексы элементам по умолчанию: 0, 1, 2. Но можно присваивать любой целый индекс по своему усмотрению:

$massiv[25] = "first";

$massiv[10] = "second";

$massiv[49] = "third";

Данный код опять-таки создает массив из трех элементов, но с индексами 10, 25 и 49. Как вы уже наверное поняли, привычный для вас способ определения количества элементов в массиве по наибольшему индексу в массиве не сработает. Тут необходимо что-то другое, а именно функция count(). Вот ее прототип: int count (массива)

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

$massiv = array("first", "second", "third");

$num = count($massiv);

for($i = 0; $i < $num; $i++){ echo (massiv[$i]."<br>"); }

Кстати, вы можете совмещать способы инициализации:

$massiv[25] = "first";

$massiv[10] = "second";

$massiv[ ] = "third";

В данном случае третьему элементу массива присвоится индекс 26.

Другой способ инициализации массива заключается в использовании функции array(). Мы передаем в функцию значения, которые хотим присвоить массиву:

$massiv = array("first", "second", "third");

Создаст массив с тремя элемента, присвоив им индексы 0, 1 и 2 соответственно. Чтобы присваивать индексы по своему усмотрению, необходимо использовать в функции array() оператор =>

$massiv = array(5 => "first", 15 => "second", 10 => "third");

$massiv = array(9 => "first", "second", 21 => "third");

В первом примере создается массив из трех элементов с индексами 5, 10 и 15. Во втором случае - с индексами 9, 10 и 21. Обратите внимание, что оператор => можно использовать перед любым элементом массива.

Чтобы присвоить элементу массива индекс в виде строки, делаем то же самое:

$massiv["first"] = "five";

$massiv["second"] = "six";

или $massive = array( "first" => "five", "second" => "six");

Теперь рассмотрим функции, которые помогут вам справляться с массивом, если он непоследовательно индексирован или индексирован строками. Две функции - each() и list() используются вместе для прохода через массив:

void list(...); //присваивает переданные переменные так, как если бы они были массивом

array each (array array) //возвращает следующую пару (ключ, значение) из массива

//в случае, если массив закончился, функция возвращает FALSE.

reset($massiv);

while (list($key, $value) = each($massiv))

{ echo "Array element with key = ".$key." has value = ".$value."<br>"; }

В примере используется еще одна функция - reset(). Ее используют для установки внутреннего указателя на первый в массиве элемент. При использовании этой функции Вы будете уверены, что находитесь в начале массива.

Следующие две функции next(), prev() перемещают внутренний курсор в массиве на один элемент вперед или назад соответственно, т.е. возвращают значение следующего или предыдущего элемента соответственно. В случае, если достигнут конец или начало массива функции возвращают FALSE.

sort(array, flag) – сортировка массива, где flag – необязательный праметр:

SORT_REGULAR – обычная сортировка

SORT_NUMBER – значения массива рассматриваются как числа

SORT_STRING – значения массива рассматриваются как строки.

asort(array) – сортировка массива с сохранением порядка индексов.

rsort(array) – аналогична sort(), но в обратном порядке.

arsort(array) – аналогична asort(), но в обратном порядке.

ksort(array) – сортирует массив по индексам.

krsort(array) – аналогична ksort(), но в обратном порядке.

Функция usort() несколько сложнее. В качестве одного аргумента, как и все остальные функции сортировки, она принимает массив. Однако у нее есть и второй аргумент. Этим вторым аргументом является функция, опре­делив которую, можно сообщить usort (), как осуществлять сортировку. В следующем примере массив сортируется по длине строк, содержащихся в его элементах. Функция strlen() возвращает длину строки.

function by_length ($a, $b)

{ $1_а = strlen ($a);

$1_Ь = strlen ($b);

if ($l_a == $l_b) return 0;

return ($l_a < $l_b) ? -1 : 1;

}

$countries = array ( "e" => "United States" ,

"d" => "United Kingdom",

"c" => "Canada",

"b" =;> "Costa Rica",

"a" => "Germany");

usort ($countries, by_length);

while (list ($key, $val) = each ($countries))

{ echo "Element $key equals $val<BR>\n"; }

Возможно, вы заметили, что в результате мы снова потеряли наши строко­вые индексы. Функция uasort () действует так же, как usort (), но сохраня­ет исходные индексы. Функция uksort () действует аналогично функции usort (), но сравнивает ключи, а не значения элементов массива.

А что если мы хотим десортироватъ массив? Функция shuffle () с помощью имеющегося в РНР генератора случайных чисел переставляет элементы массива в случайном порядке. В приведенном ниже примере функция shuf­fle () используется вместе с функцией range () с целью создания массива из ста случайно расположенных чисел. Функция range () принимает два цело­численных параметра, первый из которых должен быть меньше второго, и возвращает массив, состоящий из всех целых чисел между этими двумя зна­чениями.

// Создать массив чисел от 1 до 100:

$ints = range (1, 100);

// Задать начальное состояние генератора случайных чисел:

srand (time());

shuffle ($ints);

while (list ( , $num) = each ($ints)) {

echo "$num<br>\n"; }

Массивы особенно удоб­ны при работе с данными HTML-форм табличного ви­да. При желании предоста­вить пользователю возмож­ность ввести в базу данных несколько имен можно вос­пользоваться следующей формой

Код HTML для текстовых окон может выглядеть так:

<INPOT NAME="firstl" TYPE=TEXT> <INPUT NAME ="lastl" TYPE=TEXT>

<INPUT NAME="first2" TYPE=TEXT> <INPUT NAME="last2" TYPE=TEXT>

<INPOT NAME="first3" TYPE=TEXT> <INPUT NAME="last3" TYPE=TEXT>

Каждое текстовое окно имеет уникальное имя (" firstl", "lastl", "first2" и т. д.). При передаче формы для каждого текстового окна на форме будет соз­дана переменная PHP ($firstl, $lastl, $first2 и т. д.). Однако если коли­чество строк может меняться, как, вероятно, и будет, то более удобно пред­ставить каждое поле как массив данных. В HTML это делается с помощью квадратных скобок после имени элемента. Можно использовать цикл РНР for для размещения на форме необходимого числа текстовых окон:

<?php

$names = 3; ?>

<form action=”submit.php" method=post>

<? for ($i = 1; $i <= $names; $i++): ?>

first name:

<input мйме="first[]" type=text><br>

last name:

<input name="last[] " type=text><br><br>

<? endfor ?>

<br><input type=submit>

</form>

При передаче этой формы РНР создаст массивы с именами $first и $last, каждый элемент которых будет содержать значение текстового окна. Это позволяет легко обработать переданные данные в сценарии РНР. Допустим, что мы хотим добавить переданные имена в таблицу базы данных. Можно создать команду SQL INSERT для каждой пары имен при циклическом обходе массива:

<!— submit .php —>

<?php

$numrows = count ($first);

for ($i = 0; $i < $numrows; ++$i) {

$sql = "INSERT INTO Names ('First', 'Last') " . "VALUES (‘$first[$i]', '$last[$i]')";

// Здесь код для выполнения запроса. // ... // ... } ?>

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