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

Пример 4‑10

<?php

//Пример работы функции func_num_args()

function func1()

{

echo "Тестирование функции func1 <br>";

$num_args = func_num_args();

echo "Число аргументов = $num_args <br>";

}

func1(1, 2, 3);

//Пример работы функции func_get_arg(num_args)

function func2()

{

echo "Тестирование функции func2 <br>";

$num_args = func_num_args();

echo "Число аргументов = $num_args <br>";

if ($num_args > 4)

{

echo "$num_args","-й аргумент равен: ", func_get_arg(3), "<br>";

}

}

func2 ("a", 2, 3, "мир");

//Пример работы функции func_get_args()

function func3()

{

echo "Тестирование функции func3 <br>";

$num_args = func_num_args();

$arg_list = func_get_args();

for ($i = 0; $i < $num_args; $i++)

{

echo "Аргумент $i равен: " . $arg_list[$i] . "<br>";

}

}

func3 (1, 2, 3, 7, 9);

//Комплексный пример

function soedinenie()

{

echo "Тестирование функции soedinenie <br>";

$text = "";

//$text - искомая строка, создаваемая функцией soedinenie

//получение массива аргументов функции soedinenie()

$list_arg = func_get_args();

//получение числа аргументов в функции

$kol_arg = func_num_args();

//Далее - обход по всем аргументам функции

for ($k = 0; $k < $kol_arg; $k++)

{

$text.= $list_arg[$k]." ";

}

return $text;

}

echo soedinenie("Маша","+"),"<br>";

echo soedinenie("Маша","+","Вася"),"<br>";

echo soedinenie("Маша","+","Вася"," = любовь"),"<br>";

?>

4.3.4. Два способа передачи аргументов в функцию

В данном разделе рассматривается важный для любого языка вопрос о возможных способах передачи в функцию информации с использованием аргументов. Дело в том, что переменные, используемые в теле функции, являются в общем случае независимыми от скрипта, который вызвал данную функцию. То есть, переменные скрипта и функции занимают различные ячейки памяти. Поэтому, когда в предыдущих примерах на места формального аргумента функции подставлялись или фактическая переменная, или массив из скрипта, происходила передача значений этих аргументов соответствующим ячейкам формальных аргументов функции. При работе функции меняются именно эти значения, а значения в ячейках, относящихся к скрипту, остаются неизменными. Таким образом, изменение аргумента внутри функции не оказывает никакого влияния на значения переменных за её границами.

Такой способ называется передачей данных в аргументы функции по значению.

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

Такой способ передачи аргумента функции и возврат её в вызывающий скрипт называется передачей аргумента функции по ссылке.

Для реализации такого способа в языке PHP достаточно перед аргументом функции поставить знак амперсанда (&).

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

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