Интернет-Университет Информационных Технологий: бесплатное дистанционное образование компьютерным дисциплинам
  Лекции
Язык программирования PHP
1.   Введение в PHP
2.   Основы синтаксиса
3.   Управляющие конструкции
4.   Обработка запросов с помощью PHP
5.   Функции в PHP
6.   Объекты и классы в PHP
7.   Работа с массивами данных
8.   Работа со строками
9.   Работа с файловой системой
10.   Базы данных и СУБД. Введение в S...
11.   Взаимодействие PHP и MySQL
12.   Авторизация доступа с помощью се...
13.   Регулярные выражения
14.   Взаимодействие PHP и XML
15.   Использование шаблонов в PHP
    Экзамен
    Сдать экзамен экстерном
    Литература
    Предметный указатель
    Примеры

Язык программирования PHP
5. Лекция: Функции в PHP
Страницы: « | 1 | 2 | 3 | 4 | 5 | 6 | вопросы | » | учебники | для печати и PDA
  Если Вы заметили ошибку - сообщите нам.  
Списки аргументов переменной длины

В PHP4 можно создавать функции с переменным числом аргументов. То есть мы создаем функцию, не зная заранее, со сколькими аргументами ее вызовут. Для написания такой функции никакого специального синтаксиса не требуется. Все делается с помощью встроенных функций func_num_args(), func_get_arg(), func_get_args().

Функция func_num_args() возвращает число аргументов, переданных в текущую функцию. Эта функция может использоваться только внутри определения пользовательской функции. Если она появится вне функции, то интерпретатор выдаст предупреждение.

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

Функция func_get_arg (целое номер_аргумента ) возвращает аргумент из списка переданных в функцию аргументов, порядковый номер которого задан параметром номер_аргумента. Аргументы функции считаются начиная с нуля. Как и func_num_args(), эта функция может использоваться только внутри определения какой-либо функции.

Номер_аргумента не может превышать число аргументов, переданных в функцию. Иначе будет сгенерировано предупреждение, и функция func_get_arg() возвратит False.

Создадим функцию для проверки типа данных, ее аргументов. Считаем, что проверка прошла успешно, если первый аргумент функции – целое число, второй – строка.

<?
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. Функция для проверки типа данных, ее аргументов (html, txt)

Результатом работы будет следующее.

Данные не удовлетворяют условиям
Проверка прошла успешно

Функция func_get_args() возвращает массив, состоящий из списка аргументов, переданных функции. Каждый элемент массива соответствует аргументу, переданному функции. Если функция используется вне определения пользовательской функции, то генерируется предупреждение.

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

<?
function DataCheck(){
  $check =true;
  $n = func_num_args(); 
  // число аргументов,
  // переданных в функцию
  
  $args = func_get_args(); 
  // массив аргументов функции
  for ($i=0;$i<$n;$i++){
    $v = $args[$i];
    if ($i % 2 == 0){
      if (!is_int($v)) $check = false; 
     // проверяем,
      // является ли четный аргумент целым
    }
  }
return $check;
}
if (DataCheck("text", 324)) 
   echo "Проверка прошла успешно<br>";
else echo "Данные не удовлетворяют 
   условиям<br>";
?>

Как видим, комбинации функций func_num_args(), func_get_arg() и func_get_args() используется для того, чтобы функции могли иметь переменный список аргументов. Эти функции были добавлены только в PHP 4. В PHP3 для того, чтобы добиться подобного эффекта, можно использовать в качестве аргумента функции массив. Например, вот так можно написать скрипт, проверяющий, является ли каждый нечетный параметр функции целым числом:

<?
function DataCheck($params){
  $check =true;
  $n = count($params); 
  // число аргументов,
  // переданных в функцию
  
  for ($i=0;$i<$n;$i++){
    $v = $params[$i];
    if ($i % 2 !== 0){
      // проверяем, является ли нечетный
      // аргумент целым
if (!is_int($v)) $check = false;
    }
  }
return $check;
}
if (DataCheck("text", 324))
    echo "Проверка прошла успешно<br>";
else echo "Данные не удовлетворяют условиям<br>";
?>
Дальше »
  Если Вы заметили ошибку - сообщите нам.  
Страницы: « | 1 | 2 | 3 | 4 | 5 | 6 | вопросы | » | учебники | для печати и PDA
Курсы | Учебные программы | Учебники | Новости | Форум | Помощь

Телефон: (495) 253-9312, 253-9313, факс: (495) 253-9310, email: info@intuit.ru
© 2003-2006, INTUIT.ru::Интернет-Университет Информационных Технологий - дистанционное образование