Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Веб программирование.Начало пути.doc
Скачиваний:
6
Добавлен:
01.04.2025
Размер:
8 Мб
Скачать

Функции

Функция может быть определена с использованием синтаксиса:

function fname ($arg_1, $arg_2, ..., $arg_n)

{

echo "Пример \n";

return $val; //возвращаемое значение

}

Необязательный оператор return возвращает значение любого типа, в том числе список и объект. Как и во многих скриптовых языках в определении функции не нужно указывать тип возвращаемого значения.

<?php //pr11.php-найти все натуральные числа, не /превосходящие m

//и содержащие хотя бы одну девятку в десятичном представлении

$m=rand(10,150); //случайное значение m

print "m=$m<br>";

for($i=1;$i<$m;$i++)

{$k=f($i);

if($k!=0)print "$k<br>";

}

function f($n)

{$l=$n;

do

{

if(($l%10)==9)return $n;}

while(($l/=10)!=0);

return 0;

}

?>

Пример. Вычисление площади треугольника по формуле Герона.

<html>

<head><title>Square</title></head>

<body>

Стороны треугольника:<br>

<?php //pr12

$a=rand(1,100);

$b=rand(1,100);

$c=rand(1,100);

print "$a<br>$b<br>$c<br>";

Proverka($a,$b,$c);

function Proverka($a,$b,$c)

{if(($a+$b<=$c)||($a+$c<=$b)||($b+$c<=$a))

echo "Треугольника с указанными сторонами не существует!!!!<br>Перезагрузите страницу!<br>";

else{

echo "Всё правильно! Треугольник с указанными сторонами действительно существует!!!!<br>";

$s=Geron($a,$b,$c);

echo "Его площадь равна<br> ";

print "$s";

}

}

function Geron($a,$b,$c){

$p=($a+$b+$c)/2;

return sqrt($p*($p-$a)*($p-$b)*($p-$c));

}

?>

</body>

</html>

Несколько значений можно возвратить путём возвращения списка и функции list().

function numbers()

{

return array (0, 1, 2);

}

list ($zero, $one, $two) = numbers();

Операция ссылки & в объявлении функции и в присвоении возвращаемого значения позволяет возвратить ссылку:

function &reference()

{

return $ref;

}

$newref =&reference();

Рекурсивные функции

<?

// Написать функцию вычисления x^n

function Evaluate($x,$n)

{

if ($n==1) return $x;

else return Evaluate($x,$n-1)*$x;

}

echo("x=5; n=3; reset=");

echo(Evaluate(5,3));

echo("<BR>");

echo("x=0.2; n=3; reset=");

echo(Evaluate(0.2,3));

?>

Аргументы функции

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

В PHP, как и в С++, аргументы передаются в функцию по значению. Если необходимо дать функции возможность модифицировать аргументы, передавать их надо по ссылке &:

function f(&$strike)

{

$strike .= 'and extra.';

}

$strike = 'This is a string, ';

f($strike);

echo $strike;// выводит 'This is a string, and extra.'

По ссылке в функцию передается не значение переменной $strike, а ее адрес. После этого изменение переменной $strike в функции влечет изменение аргумента $strike в вызывающей функцию программе.

Функция может определить значения по умолчанию (значение аргументу присваивается в случае, если аргумент не был передан в функцию) в стиле C++ для скалярных аргументов:

function f($а = "0")

{

return $а.;

}

echo f(); // 0.

echo f("1");// 1.

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