Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как вызвать функцию в функции
 
 автор: zsaz   (11.08.2011 в 21:47)   письмо автору
 
 

Есть у меня такая конструкция

function first($id)
{
function second ($a)
{
return $a+1;
}

$b = second(1);
echo $b;
return 1;
}

Но проблема в том, что функция second() не вызывается.
Как ее можно вызвать при условии, что эта функция находится в другой функции??

  Ответить  
 
 автор: cheops   (11.08.2011 в 22:03)   письмо автору
 
   для: zsaz   (11.08.2011 в 21:47)
 

Вызвать функцию second() можно только внутри first(), чтобы появилась возможность вызывать функцию second() в других функциях её нужно вынести из first() в глобальную область видимости.

  Ответить  
 
 автор: Гавриленко Дмитрий   (11.08.2011 в 22:14)   письмо автору
 
   для: cheops   (11.08.2011 в 22:03)
 

как ее можно вызвать изнутри?

  Ответить  
 
 автор: cheops   (11.08.2011 в 22:18)   письмо автору
 
   для: Гавриленко Дмитрий   (11.08.2011 в 22:14)
 

А прямо как у zsaz в примере, как обычную функцию, просто её имя не будет видно нигде, кроме как внутри функции.

  Ответить  
 
 автор: Drago   (11.08.2011 в 23:09)   письмо автору
 
   для: cheops   (11.08.2011 в 22:03)
 

Или, сначала вызвать функцию first(), тогда функция second() автоматически станет глобальной. Точнее, она автоматически будет определена, что и позволит ее вызывать как любую другую функцию.

  Ответить  
 
 автор: Valick   (11.08.2011 в 23:47)   письмо автору
 
   для: zsaz   (11.08.2011 в 21:47)
 

Есть у меня такая конструкция
А зачем вам такая конструкция? Есть только одна причина по которой можно засунуть функцию в функцию, это чтобы ее не было видно нигде кроме этой функции. Так зачем засовывать то что потом невозможно без гемора вытащить?
самый простой способ сделать так:
function first($id)
{
function second ($a)
{
return $a+1;
}

$b = second(1);
echo $b;
return 1;
}

function second ($a)
{
return $a+1;
}

ивызывайнехочу

  Ответить  
 
 автор: Drago   (12.08.2011 в 00:07)   письмо автору
 
   для: Valick   (11.08.2011 в 23:47)
 

>самый простой способ сделать так:

Угу, а потом вызвать first() и получить Fatal error. :)

  Ответить  
 
 автор: Valick   (12.08.2011 в 00:26)   письмо автору
 
   для: Drago   (12.08.2011 в 00:07)
 

с какого перепугу? :)
___
да, вы правы, мой вариант совершенно не вариант))
сделал над собой усилие и проверил
хотя само по себе это бред.... (

  Ответить  
 
 автор: zsaz   (12.08.2011 в 19:04)   письмо автору
 
   для: Valick   (12.08.2011 в 00:26)
 

Cпасибо. Функция действительно вызывается в функции, но только не в моей.

Вообще у меня вот такая вот конструкция. Получается, что функция url_replace вызывается по средством функции preg_replace_callback в функции first. Но по факту url_replace не вызывается внути функции first, а только если код написан отдельно.

function first()
{
$myrow['text'] = preg_replace_callback('@<a.+href=(\'|")((?!http://(www.|)mashintop.ru(/|)).*)(\'|")>@','url_replace', $myrow['text']);
}

  Ответить  
 
 автор: zsaz   (14.08.2011 в 18:59)   письмо автору
 
   для: zsaz   (12.08.2011 в 19:04)
 

Подскажите, пожалуйста! Как мне быть??

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования