| Cтатические переменные |
|
|
|
|
Помимо локальных и глобальных переменных, в PHP существует еще один тип переменных - статические переменные. Если в теле пользовательской функции объявлена статическая переменная, то компилятор не будет ее удалять после завершения работы функции. Пример работы пользовательской функции, содержащей статические переменные: <?php Данный сценарий выводит строку: 1 2 3 4 5 6 7 8 9 10 Если мы удалим инструкцию static, будет выведена строка: 1 1 1 1 1 1 1 1 1 1 Это связано с тем, что переменная $a будет удаляться при завершении работы функции и обнуляться при каждом ее вызове. Переменная $a инкрементируется сразу после обнуления, а только потом выводится. Рекурсивные функции Рекурсивные функции - это функции, вызывающие самих себя. Такой вызов называется рекурсивным. Рекурсия бывает:
Рассмотрим пример рекурсивной функции (прямой), используемой при вычислении факториала x! : <?php В рассмотренном примере пользовательская функция factorial() вызывает сама себя, что является прямой рекурсией. Непрямая рекурсия возникает, когда первая функция вызывает вторую, а вторая - первую. При создании рекурсивных функций необходимо соблюдать осторожность, стараясь избегать зацикливания. Вот пример неправильного использования рекурсивной функции: <?php Условно определяемые функции PHP позволяет, в зависимости от определенных факторов, одной и той же функции выполнять различные действия. Рассмотрим пример: <?php Рассмотренный скрипт выводит версию используемого интерпретатора PHP. Одна и та же функция getversion() может возвращать различный результат, в зависимости от значения переменной $phpver. Возврат функцией ссылки Рассмотрим еще одну возможность пользовательских функций PHP - возврат ссылок. Приведем конкретный пример скрипта, использующего такую возможность: <?php Рассмотренный скрипт выведет 0, поскольку если вы измените значение одной из переменных ($a или $b), автоматически будет изменено значение другой переменной. Для разрыва связи между объектом и ссылкой, используйте оператор UnSet(). Подробнее о ссылках можно узнать здесь. По материалам сайта: http://www.php.su/
|



