Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как вывести функцию в переменной???
Форумы портала PHP.SU » PHP » Программирование на PHP » Как вывести функцию в переменной???

Страниц (1): [1]
 

1. Maskca - 30 Января, 2010 - 13:21:41 - перейти к сообщению
Подскажите пожалуйста как осуществить такое:
Есть некоторая функция (например if($a>$b) echo $a=5;)
А мне нужно эту функцию присвоить переменной $z='if($a>$b) echo $a=5;';
А потом это вывести echo $z;
А мне выводит не сам результат функции, а просто текст функции:if($a>$b) echo $a=5;
Вопрос: Как это исправить???
2. PeaceDuke - 30 Января, 2010 - 13:56:42 - перейти к сообщению
Если я тебя так понял:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. function fnc($a,$b){
  4.  
  5. if($a>$b){
  6.  
  7. return $a=5
  8.  
  9. }
  10. }
  11.  
  12. $z = fnc($a,$b);
  13.  
  14. ?>
  15.  
3. Maskca - 30 Января, 2010 - 14:58:10 - перейти к сообщению
Мне так не подходит у меня вроди получилось но немножко не получилось:
если брать так: $b=$a=5;
echo $b;
то выводит все харашо: 5
А если я $a=5 записываю в переменую в базе даных то выводит $a=5, тоисть тоже самое что и при $b='$a=5';
echo $b;
то выводит $a=5
4. Мелкий - 30 Января, 2010 - 15:41:53 - перейти к сообщению
Maskca, что вам всё-таки надо? И зачем?

Maskca пишет:
А мне нужно эту функцию присвоить переменной $z='if($a>$b) echo $a=5;';

В рамках структурного программирования вы в одну Сущность переменные и функции не смешаете. Читайте ООП, если хотите по "echo $z;" производить какие-то неявные действия.
5. PeaceDuke - 30 Января, 2010 - 20:07:25 - перейти к сообщению
Что то я твоя не понимать :-D
Зачем такую ерунду пароть
$b=$a=5;
если можно $b = 5;
Или я чего то не понимаю о_О
6. Maskca - 30 Января, 2010 - 20:57:50 - перейти к сообщению
Спасибо я уже додумался, мне нужно было чтобы переменную выводило не как текст, а как обработаный код, и это можно сделать с помощю функции eval
7. SDR - 30 Января, 2010 - 22:46:04 - перейти к сообщению
CODE (text):
скопировать код в буфер обмена
  1.  
  2. $z='if($a>$b) echo $a=5;';
  3. eval($z);
  4.  
8. JustUserR - 31 Января, 2010 - 01:31:40 - перейти к сообщению
Maskca Аналогичное решение можно получить при использовании lamdba-функций - в таком случае для вызова такой динамической функции не потребуется eval и можно будет просмотреть код
Также будет меньше проблем с областями видимости - так как у eval-кода специальная область видимости - а у lambda-функций самая обычная функциональная

 

Powered by ExBB FM 1.0 RC1