[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как выполнить строку как выражение
LRCenter

$b = "12";
$c = "8";

$a = "$b + $c";

echo $a;


Результата выводится "12 + 8".
Возможно ли выполнить строку как арифметическое выражение, т.е. чтоб вывело "20"?



Спустя 20 минут, 28 секунд (8.06.2010 - 07:31) Basili4 написал(а):
eval

Спустя 27 минут, 32 секунды (8.06.2010 - 07:59) LRCenter написал(а):
Спасибо

Спустя 11 минут, 51 секунда (8.06.2010 - 08:10) LRCenter написал(а):
Подскажите еще, пожалуйста.


eval("echo $a");


Прекрасно работет, а


eval("$d = $a");


Выдает ошибку, что оператор = недопустим, почему? Как тогда вывести результат выполнения строки кода в переменной $a в переменную $d?

Спустя 3 минуты, 8 секунд (8.06.2010 - 08:14) Basili4 написал(а):

$a=$d;

eval('echo $a');


Так. Я вообще использую eval только кожа надо строку типа (1+33+44)-40 по считать. Остальное делаю обычным способом

Спустя 11 минут, 45 секунд (8.06.2010 - 08:25) LRCenter написал(а):
Нет, вы не поняли.

Я получаю переменную, в которой содержится арифметическое выражение, например

$a = "($b + $c) - $d";


Также получаю значения всех переменных с которыми оперирует выражение.

Так вот, мне надо выполнить, эту строку кода, а результат вывести в переменную, которую затем можно использовать дальше, не могу понять как это сделать.

eval("echo $a");


Работает, но мне не в браузер выводить надо, а в переменную.

eval("$f = $a");

и
eval("return $a");


не работают.


Спустя 7 минут, 26 секунд (8.06.2010 - 08:33) Basili4 написал(а):
Так получилось

<?php
$a=1;
$b=2;
eval ("\$c =" ."\$a+$b;");
echo($c);


Спустя 5 минут, 32 секунды (8.06.2010 - 08:38) LRCenter написал(а):
Идея как раз в том, что выражение, из переменной $a передается в неизменном виде, т.е. влиять на него вы мы не можем.

Странно получается, echo можно, а вывести результат за пределы eval нельзя что ли?

Спустя 6 минут, 50 секунд (8.06.2010 - 08:45) LRCenter написал(а):
Нашел решение biggrin.gif

$b = "12";
$c = "8";
$a = "$b + $c;";

$d = eval("return $a");

echo $d;



Выводит "20". return все-таки работает. Спасибо еще раз.

Спустя 38 секунд (8.06.2010 - 08:46) Basili4 написал(а):
Можно все только занк $ надо экранировать.


_____________
Меньше кода - меньше багов ©
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.