Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Сайтостроение (уроки по HTML, PHP, mySQL, веб-дизайну)


Информационный Канал Subscribe.Ru

Сайтостроение. Основы PHP. Уроки с сайта http://progs.biz

Рассылка №15

Основы PHP. Урок 14. Функции с параметрами по умолчанию.
Основы PHP. Урок 15. Передаем параметры по ссылке.

Полные версии уроков (с картинками) можно найти по адресам
Урок 14. Функции с параметрами по умолчанию.
Урок 15. Передаем параметры по ссылке.

PHP. Урок 14. Функции с параметрами по умолчанию

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

<?
function func($n, $town="New York"){
  echo $n;
  echo "<br>";
  echo $town;
  echo "<br>";
}
  $k=22;
  //Вызов функции с параметром по умолчанию
  func($k);
  //Вызов функции с заданным параметром
  func($k, "Los Angeles");
?>

Указанный фрагмент выведет четыре строки: 22, New York, 22 и Los Angeles.

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

...
//Правильно
function func1($n, $town="New York", $type=2){
  ...
}
//Неправильно
function func2($n, $town="New York", $type){
  ...
}
 ...
Наверх

PHP. Урок 15. Передаем параметры по ссылке

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

<?
function func($n){
  $n++;
  echo $n; //Напечатается 9
};
//Вызов функции
$k=8;
  func($k);
  echo $k; //Напечатается 8
?>

Иногда же нам необходимо, чтобы функция изменяла передаваемые в нее параметры. Т. е. мы хотим, чтобы после выполнения функции переданные в нее параметры получили другое значение. Делается этто так:

<?
function func(&$n){
  $n++;
  echo $n; //Напечатается 9
};
//Вызов функции
$k=8;
  func($k);
  echo $k; //Напечатается 9
?>

Обратите внимание на знак амперсанда (&) перед параметром функции:

...
function func(&$n){
 ...

Именно благодаря ему наша функция получает не копию переменной, а "оригинал".

Это был синтаксис в стиле C/C++. В PHP существует и другой синтаксис для этой цели:

<?
function func($n){
  $n++;
  echo $n; //Напечатается 9
};
//Вызов функции
$k=8;
  func(&$k);
  echo $k; //Напечатается 9
?>

Как видите, здесь амперсанд ставится при вызове функции, а не при объявлении, как в первом случае. Если ваша функция всегда должна изменять значение своего параметра то, разумеется, первый способ предпочтительнее (так как программисту ничего не надо будет помнить - просто вызываем функцию и все). Если же ваша функция иногда должна менять свой параметр, а иногда нет, то используйте второй способ.

Наверх

Другие рассылки с сайта progs.biz:

Рассылки Subscribe.Ru
Visual Basic. Уроки.
Уроки по C# и .NET.
  • Уроки по Visual Basic.NET с сайта progs.biz. Написание программ, создание собственных элементов, примеры и исходники, создание ActiveX-элементов, работа с базами данных, создание веб-приложений, FAQ и многое другое.
  • Уроки по C# -новому языку от Microsoft для платформы .NET. Примеры, исходники, статьи, FAQ.

Copyright Алексеев Игорь, 2002

Copyright сайт progs.biz, 2002



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное