[Image] Четверг, 19.12.2024, 03:00 [Image]
SEO, технологии, игры, IT новости
[Image] Главная Регистрация Вход [Image]
[Image] Приветствую Вас, Гость · RSS [Image]
Меню сайта

Форма входа
 Блог
Главная » 2010 » Декабрь » 18 » Ссылки, используемые в функциях
19:43
Ссылки, используемые в функциях

Ссылки могут использоваться в сочетании с функциями. Например, рассмотрим ситуацию, в которой желательно возвращать более одного значения из функции. Вернуть более одного значения с помощью оператора return невозможно, к тому же может быть нежелательным использование глобальных переменных. С помощью ссылок вы можете вернуть столько значений, сколько нужно, причем в относительно понятной манере.
Чтобы определить параметр функции как ссылку, предварите имя переменной параметра префиксом & и передавайте функции ссылку при вызове, как показано на листинге 1.28.

Листинг 1.28. Передача параметра по ссылке в РНР
function reference_test($var, &$result, &$result2) (
$result = "Это возвращаемое значение #1";
$result2 = "Вы передали $var как параметр";
return 42;
}
$res = reference_test(10, &$resl, &$res2);
echo "Значение \$res равно '$res'
";
echo "Значение \$resl равно '$resl'
";
echo "Значение \$res2 равно c$res2'
";
?>

Это выдаст такой результат:

Значение $res равно '42'
Значение $resl равно 'Это возвращаемое значение #1'
Значение $res2 равно 'Вы передали 10 как параметр'

Чтобы лучше понять, как работает этот сценарий, пройдем его строка за строкой.
Во-первых, объявлено, что функция reference_test () принимает три параметра.
Первый параметр $val — это стандартный параметр РНР, в то время как оставшиеся два — $result и $result2 — являются параметрами-ссылками. Когда вызывается функция reference_test (), ей передается три параметра. Первый — константное значение 10, а остальные два — ссылки на переменные $resl и $res2. При вызове устанавливается связь между переменными $resultl и $result2 с одной стороны и $resl и $res2 — с другой (поскольку они друг на друга ссылаются). Поэтому, когда внутри функции изменяются значения $ r e s u l t и $result2, связанные с ними переменные $resl и $res2 также изменяются. Функция по-прежнему возвращает целую константу 42, которая затем, как и ожидается, присваивается переменной $res.

НА ЗАМЕТКУ
Не волнуйтесь, если поначалу сценарий покажется непонятным. Ссылки — это одна из наиболее сложных для понимания концепций в РНР, потому требуется некоторая практика, чтобы разобраться в них.

Также следует отметить, что вы не должны передавать параметры по ссылке во время выполнения и в объявлении функции. Размещение ссылок в любом из этих двух случаев будет иметь один и тот же эффект. Единственная разница в том, что если параметры-ссылки объявлены в самой функции, то при всех ее вызовах параметры будут передаваться по ссылке.
Наряду с передачей переменных в функции по ссылке, РНР поддерживает возвращаемые ссылочные переменные. В примере, представленном в листинге 1.29, эта концепция применяется для создания функции, возвращающей ссылку на базе значений переданных параметров.

Листинг 1.29. Возврат значения по ссылке
function Sfind_var($one, $two, $three) {
if(($one > 0) && ($one <= 10)) return $one;
if(($two > 0) && ($two <= 10)) return $two;
if(($three > 0) && ($three <= 10)) return $three;
}
$c_one = 'foo';
$c_two = 42;
$c_three = 4;
$right_var = &find_var($c_one, $c_two, $c_three);
$right_var++;
echo "Значение \$c_three и \$right_var равны: ";
echo "$c_three и $right_var
\n";
?>

Когда этот код выполняется, функция find_var () определяет, какие из трех параметров находятся в диапазоне от 1 до 10, и возвращает ссылку на эту переменную, которая затем может быть привязана к переменной $right var. В результате, когда $right_var увеличивается, также будет увеличена только та переменная, которая соответствует требованиям (а именно — $c_three):Значение $c_three и $right var равны: 5 и 5


Категория: Все о PHP | Просмотров: 1213 | Добавил: witkom8382 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024
Категории
Оптимизация сайта [592]
Создание сайтов [355]
Заработать в интернете [508]
Технологии [48]
Полезное [392]
Услуги и сервисы [317]
Автоблог [105]
Скрипты для Ucoz [39]
Движок на сайт [10]
Все о Joomla и Drupal [20]
Все о PHP [91]
Поиск
Пользовательский поиск
Статистика


Онлайн всего: 5
Гостей: 4
Пользователей: 1
Zelenaqkm
Seo сайт, технологии продвижения, мета теги, оптимизация сайтов, новости сео, Скрипты, Ucoz

Рейтинг@Mail.ru