Язык программирования PHP

         

потому что она еще не


<? $make = true; /* здесь нельзя вызвать Make_event(); потому что она еще не существует, но можно вызвать Save_info() */
Save_info("Вася","Иванов", "Я выбрал курс по PHP");
if ($make){ // определение функции Make_event() function Make_event(){ echo "<p>Хочу изучать Python<br>"; } } // теперь можно вызывать Make_event() Make_event(); // определение функции Save_info function Save_info($first, $last, $message){ echo "<br>$message<br>"; echo "Имя: ". $first . " ". $last . "<br>"; } Save_info("Федя","Федоров", "А я выбрал Lisp"); // Save_info можно вызывать и здесь ?>
Пример 5.1. Определение функции внутри условного оператора
Закрыть окно

<?php /* нельзя сохранить данные, т.е. вызвать функцию DataSave() до того, как выполнена проверка их правильности, т.е. вызвана функция DataCheck() */
DataCheck(); DataSave();
function DataCheck(){ // проверка правильности данных function DataSave(){ // сохраняем данные } } ?>
Пример 5.2. Определение функции внутри функции
Закрыть окно



<?php // напишем функцию, которая бы добавляла // к строке слово checked function add_label(&$data_str){ $data_str .= "checked"; } $str = "<input type=radio name=article "; // пусть имеется такая строка echo $str ."><br>"; // выведет элемент формы – // не отмеченную радио кнопку add_label($str); // вызовем функцию echo $str ."><br>"; // это выведет уже отмеченную // радио кнопку ?>
Пример 5.3. Передача аргументов по ссылке
Закрыть окно

<?php function Message($sign="Оргкомитет."){ // здесь параметр sign имеет по умолчанию значение "Оргкомитет" echo "Следующее собрание состоится завтра.<br>"; echo "$sign<br>"; } Message(); // вызываем функцию без параметра. // В этом случае подпись – это Оргкомитет Message("С уважением, Вася"); // В этом случае подпись // будет "С уважением, Вася." ?>
Пример 5.4. Значения аргументов по умолчанию
Закрыть окно

<?php function DataCheck(){ $n = func_num_args(); echo "Число аргументов функции $n"; } DataCheck(); // выведет строку // " Число аргументов функции 0" DataCheck(1,2,3); // выведет строку // "Число аргументов функции 3" ?>
Пример 5.5. Использование функции func_num_args()
Закрыть окно

<? function DataCheck(){ $check =true; $n = func_num_args(); // число аргументов, // переданных в функцию /* проверяем, является ли первый переданный аргумент целым числом */ if ($n>=1) if (!is_int(func_get_arg(0))) $check = false; /* проверяем, является ли второй переданный аргумент строкой */ if ($n>=2) if (!is_string(func_get_arg(1))) $check = false; return $check; }
if (DataCheck(a123,"text")) echo "Проверка прошла успешно<br>"; else echo "Данные не удовлетворяют условиям<br>"; if (DataCheck(324)) echo "Проверка прошла успешно<br>"; else echo "Данные не удовлетворяют условиям<br>"; ?>
Пример 5.6. Функция для проверки типа данных, ее аргументов
Закрыть окно

<? $a=1; function Test_g(){ global $a; $a = $a*2; echo ' в результате работы функции $a=',$a; } echo 'вне функции $a=',$a,', '; Test_g(); echo "<br>"; echo 'вне функции $a=',$a,', '; Test_g(); ?>
Пример 5.7. Глобальные переменные
Закрыть окно

<? function Test_s(){ static $a = 1; // нельзя присваивать выражение или ссылку $a = $a*2; echo $a; } Test_s(); // выведет 2 echo $a; // ничего не выведет, так как // $a доступна только // внутри функции Test_s(); // внутри функции $a=2, поэтому // результатом работы функции // будет число 4 ?>
Пример 5.8. Использование статической переменной
Закрыть окно

<? $arr = array("first","second"); list($a,$b) = $arr; // переменной $ a присваивается первое // значение массива, $b – второе echo $a," ",$b; // выведет строку «first second» ?>
Пример 5.9. Использование list()
Закрыть окно

<? $a = 3; $b = 2; function & ref($par){ global $a, $b; if ($par % 2 == 0) return $b; else return $a; } $var =& ref(4); echo $var, " и ", $b, "<br>"; //выведет 2 и 2 $b = 10; echo $var, " и ", $b, "<br>"; // выведет 10 и 10 ?>
Пример 5.10. Возвращение ссылки
Закрыть окно

<? /* создадим две простые функции: Add_sign – добавляет подпись к строке и Show_text – выводит строку текста */
function Add_sign($string, $sign="С уважением, Петр"){ echo $string ." ".$sign; } function Show_text(){ echo "Отправить сообщение по почте<br>"; } $func = "Show_text"; // создаем переменную со значением, // равным имени функции Show_text $func(); // это вызовет функцию Show_text $func = "Add_sign"; // создаем переменную со значением, // равным имени функции Add_sign $func("Привет всем <br>"); // это вызовет функцию // Add_sign с параметром "Привет всем" ?>
Пример 5.11. Использование переменных функций
Закрыть окно

<form action="ask_names.php"> Создать элемент "строка ввода текста": <input type=checkbox name=types[] value=string><br> Количество элементов: <input type=text name=numbers[string] size=3><br> <br> Создать элемент "текстовая область": <input type=checkbox name=types[] value=text><br> Количество элементов: <input type=text name=numbers[text] size=3><br> <input type=submit value="Создать"> </form>
Листинг 5.12. task_form.html
Закрыть окно

<? $file = "task.php"; /* файл, который будет обрабатывать сгенерированную этим скриптом форму */
function Ask_names(){ // функция генерирует форму для // ввода названий элементов ввода
global $file; //объявляем, что хотим использовать эту // переменную, заданную вне функции if (isset($_GET["types"])){ $st = '<form action="'.$file.'">'; foreach ($_GET["types"] as $k => $type){ /* перебираем все типы элементов, которые нужно создать */
$num = $_GET["numbers"][$type]; // сколько элементов каждого типа нужно for ($i=1;$i<=$num;$i++){ // создаем $num строк для ввода $st.= "Введите имя $i-го элемента типа $type: "; $st.= "<input type=text name=names[$type][]><br>"; } // сохраняем тип и число необходимых // элементов ввода этого типа $st.= "<input type=hidden name=types[] value=$type>"; $st.= "<input type=hidden name=numbers[] value=$num><br>"; } $st .= "<input type=submit name=send value=send></form>"; return $st; // в переменной $st содержится код формы // для запроса имен } else echo "Select type"; } echo Ask_names(); // вызываем функцию и выводим // результаты ее работы ?>
Листинг 5.13. ask_names.php
Закрыть окно

<? $show_file = "task_show.php"; /* файл, который будет обрабатывать данные созданной этим файлом формы */
function Create_element($type,$name){ // функция создает элемент ввода // по типу и названию switch($type){ case"string": $str .= "$name: <input type=text name=string[]><br>"; break; case "text": $str .= "$name: <textarea name=text[]></textarea><br>"; break; } return $str; } function Create_form(){ // функция создает форму // с нужными элементами global $show_file; $str = '<form action="'.$show_file.'">'; foreach ($_GET["types"] as $k => $type){ // перебираем типы элементов $num = $_GET["numbers"][$k]; // число элементов этого типа
for ($i=1;$i<=$num;$i++){ $arr = $_GET["names"][$type][$i-1]; // имя создаваемого элемента
$str .= Create_element($type,$arr); // вызываем функцию для // создания элемента } } $str .= "<input type=submit value=send></form>"; echo $str; } $crt = "Create_form"; $crt(); // вызываем функцию создания // формы Create_form ?>
Листинг 5.14. task.php
Закрыть окно
Содержание раздела