Главная Мой профиль Регистрация Выход Вход
Пт
15.12.2017
05:30
Приветствую Вас Гость | RSS ВходРегистрацияГлавная
Поиск
Друзья сайта
Опрос
Какой поисковик предпочитаете?
1. Google
2. Yandex
3. Другое
4. Yahoo!
5. Rambler
Всего ответов: 394
Статистика




Онлайн всего: 1
Гостей: 1
Пользователей: 0



Главная » Уроки » Уроки PHP

Урок 11. Функции.
______________________
УРОК 11. Функции (подпрограммы).
______________________

Вот представьте такую ситуацию, вы пишите гостевую, форум, да не важно что...! У вас в коде - много повторяющийхся действий.
Для каждой кнопочки приходится писать одно и тоже. В итоге - захламление и нечитабельность кода. Как этого избежать?
Очень просто - вынести повторяющийся код в функцию, а при обращении к функции подставлять нужные значения. Сейчас все станет понятным.

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

function example ()
{
//тело функции
}

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

function multiply($a)
//Принимаемое значение занесем в переменную $a.
{
$a = $a * 2;
echo $a;
}
multiply(2);
//обращаемся к функции. В качестве аргумента передаем число 2.

В результате работы этого скрипта мы увидим на экране число 4. Помимо чисел функции можно передавать что угодно. А что если нам не нужно чтобы функция выводила результат своей работы на экран, а отдавала его нам? Для этого существует конструкция return. Она возвращает нам какое-либо значение.

function multiply($a)
Принимаемое значение занесем в переменную $a.
{
$a = $a * 2;
return $a;
//возвращаем значение переменной $a
}
$var = 4;
$result = multiply($var);
// передаем функции multiply значение переменной $var. Т.к. функция нам возвратит результат своих вычислений, то занесем их в $result.

Теперь по порядку. Вначале объявляется функция. Затем объявляется переменная var со значением 4. Далее мы обращаемся к функции multiply, которой передаем значение переменной var. Функция его принимает и записывает в уже свою переменную $a, которую умножает на 2 и отправляет нам. Результат записывается в переменную result. Если бы мы в конце написали echo $result, то получили бы число 8.
А что было если бы мы написали echo $a? А ничего. Переменные, которые находится внутри функции видны только ей самой. Если вы этого не хотите, то пора познакомиться с глобальными переменными. Но об этом чуть позже, а пока немного усложним нашу функцию, передадим ей несколько параметров.

function multiply($name1, $name2, $name3) {
// записываем все принимаемые значения в переменные.
return "$name3 $name2 $name1";// Возвращаем принятые параметры только в обратном порядке.
}
$result = multiply("Алексей","Андрей","Иван");
// отправляем функции три значения.
echo $result; //результат работы функции - Иван Андрей Алексей

...Глобальные переменные...

Переменная, объявленная ВНУТРИ функции, видна ТОЛЬКО функции. Такая переменная называется локальной. Пример:

$a = 5;
function example() {
$a = 10;
echo $a;
}
echo example();
echo "
";
echo $a;
?>

На экране мы увидим такое:
10
5

Как видите, внутри функции переменная $a не переписалась. Потому что они локальная, а переменная $a которая объвлена вне функции, глобальная. И это совершенно разные переменные!
В PHP существует суперглобальный массив $GLOBALS. Это ассоциативный массив, ключом которого является имя, а значением - содержимое глобальной переменной. Ну и как к любому массиву, к нему тоже можно обратиться.

$a = 5;
$b = 2;
function example() {
$res = $GLOBALS["a"] + $GLOBALS["b"];
echo $res;
}
echo example();
echo "
";
echo $a;
?>

На экране мы увидим такое:
7
5

Так же существует инструкия global которая позволяет функции видеть глобальные переменные. Напр. код global $a, $b написанный внутри функции, позволяет работать с переменными $a и $b как с глобальными, а не локальными.

$a = 5;
$b = 2;
echo "$a, $b";
echo "
";
function example() {
global $a, $b;
$a++;
$b++;
}
example();
echo "$a, $b";
?>

На экране мы увидим такое:
5, 2
6, 3

Как видно из примера, вначале мы выводим значения переменных $a и $b, потом обращаемся к функции, которая увеличивает каждую переменную на единицу, и снова выводим те же самые переменные. Вот так с помощью glogal мы можем работать с глобальными переменными внутри функций.
А если бы мы написали global $a то переменная $b была бы локальной. И меняя её значение внутри функции, мы не сможем поменять её за пределами нашей функции.

...Статические переменные...

Еще хотелось бы обратить внимание на статические переменные. Все дело в том, что после завершения работы функции все наши переменные которые были там созданы, удаляются. Избежать этого можно используя инструкцию static

function example() {
static $a = 5;
$a++;
echo "$a, ";
}
example();
example();
example();
?>

На экране мы увидим такое:
6, 7, 8, Каждый раз когда мы обращаемся к функции, переменная увеличивается на единицу, и результат мы видим на экране. А если бы мы не указали static, то после завершения работы функции переменная удалялась и на экране бы мы видели каждый раз 6, 6, 6,

...Функции встроенные в PHP...

В PHP существует масса готовых функций, поэтому вам не придется заново изобретать велосипед, вы можете пользоваться уже готовыми smile
count() - эта функция подсчитывает число элементов массива. В скобках нужно просто указать массив.
$my_array = array("Яблоко","Груша","Ананас");
echo count($my_array);
//возвратит 3.

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

trim() - Удаляет пробелы из начала и конца строки.

$str = " Привет как дела? ";
echo trim($str);

date() - Возвращает дату, указанного вами формата. Следующие символы распознаются внутри строки формата. Любой неопознанный символ будет выводиться точно, как задан:
Y - Год напр. 1995
y - год напр. 95
M - Месяц напр. Oct
m - месяц напр. 10
M - Месяц напр. October
D - День напр. Fri
l - День напр. Friday
d - день напр. 27
z - День года напр. 299
H - Час в 24-м формате напр. 13
h - Час в 12-м формате напр. 1
i - Минуты напр. 5
s - Секунды напр. 40
U - Секунды с начала эпохи напр. 814807830 + A - AM/PM
a - am/pm
echo date("H:i");

strrev() - переворачивает строку. echo strrev("Hello world!"); //выводет "!dlrow olleH"

list() - эта функция позволяет преобразовать значения массива в переменные.
Синтаксис достаточно прост: list($Переменная1, $Переменная2, $ПеременнаяN) = $Массив_из_которого_брать_значения
Каждая переменная соответствует элементу в массиве. Т.е. $Переменная1 = $Массив[0], $Переменная2 = $Массив[1]. Ну и как всегда, пример:

$my_array = array("Яблоко","Груша","Ананас");
list($var1, $var2, $var3) = $my_array;
echo "Я люблю $var1 и $var3";
//выведет Я люблю Яблоко и Ананас
Если нужно вытащить только 0 и 2 элементы массива, то это можно сделать так: list($var1, ,$var3) = $my_array; т.е. просто пропустив второй элемент массива.

...Итог...

Подведем итог, чему же мы научиилсь. А научились мы в этом уроке создавать свои функции (подрограммы, пользовательские функции (одно и то же)) а именно:
- Обращаться к функциям
- Передавать им свои параметры
- Возвращать из функции значения
- Создавать глобальные, статические и локальные переменные.
- Узнали про суперглобольный массив $GLOBALS
- Рассмотрели некоторые уже готовые функции и научились их использовать.
Категория: Уроки PHP | Добавил: JUMP (19.03.2011)
Просмотров: 2840 | Теги: php для новичков, мини-уроки php, урок php, php, Функции | Рейтинг: 5.0/1


Форма входа
Логин:
Пароль:
Меню сайта
Категории
Класс 1
Здесь учат самым элементарным вещам. Этот уровень необходимо посетить тем, кто ещё плохо ориентируется в компьютерах.
Класс 2
Здесь даются основные навыки хакерства. Этот класс для тех кто давно на "ты" с компьютерами, изучил винду вдоль и поперёк, а потом устал просто так сёрфить по инету и решил научится ещё чему-нибудь ;)
Уроки PHP
Мини-уроки php by JUMP
Мини-чат
    Все материалы на сайте предоставлены исключительно в ознакомительных целях.
     Администрация не несет никакой ответственности за последствия их использования.