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