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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Посчитать математические действия в переменной

Сообщения:  [1-10] 

 
 автор: sim5   (25.10.2010 в 20:37)   письмо автору
 
   для: kulibko   (25.10.2010 в 20:36)
 

А что же вы тогда пишите "пользователь", если речь о "хозяине"? Ну используйте eval тогда, какие проблемы.

  Ответить  
 
 автор: kulibko   (25.10.2010 в 20:36)   письмо автору
 
   для: sim5   (25.10.2010 в 20:28)
 

Если можно вводить +=*/, то все это толком написать уже далеко не в одну строчку будет.

Вы eval не советуете потому как грузит систему сильно? Или же просто в плане безопасности? Если безопасность, то я за это не волнуюсь - только один человек имеет доступ к этой настройке (это я :) ), и ему и в мыслях нет хакать систему.

  Ответить  
 
 автор: sim5   (25.10.2010 в 20:28)   письмо автору
 
   для: kulibko   (25.10.2010 в 20:25)
 

Ну если умножить, то можно:
<?
$var 
"60*60*24";
echo 
array_product(array_map("intval"explode("*"$var)));
Есть и функция подсчитываяющая сумму значений элементов массива.

  Ответить  
 
 автор: kulibko   (25.10.2010 в 20:25)   письмо автору
 
   для: sim5   (25.10.2010 в 20:09)
 

Несложно это каким конкретно способом?

  Ответить  
 
 автор: sim5   (25.10.2010 в 20:09)   письмо автору
 
   для: kulibko   (25.10.2010 в 20:05)
 

Ну если вводятся пользователем, то о eval забудьте. Только перемножить, суммировать, несложно и без нее, сложнее, если несколько разных действий.

  Ответить  
 
 автор: kulibko   (25.10.2010 в 20:08)   письмо автору
 
   для: Trianon   (25.10.2010 в 19:46)
 

Вредоносный код никак не сможет попасть - только один человек имеет доступ к этой настройке.

У меня заработало так

$s = '$rezult = '.$var';';
eval($s);


Но слишком дико смотрится - нет вариантов получше?

  Ответить  
 
 автор: kulibko   (25.10.2010 в 20:05)   письмо автору
 
   для: sim5   (25.10.2010 в 19:34)
 

Нет, вводятся пользователями - главное что это всегда математические действия :)

  Ответить  
 
 автор: Trianon   (25.10.2010 в 19:46)   письмо автору
 
   для: kulibko   (25.10.2010 в 19:20)
 

>Мне нужно получить результат действия 60*60*24 (т.е. исполнить эту текстовую переменную).
>Вариант
>
$rezult = eval($var);

>не работает.

почему не работает?

Работает. особенно, если обрамить приведенный текст недостающими до полного оператора фрагментами.
Вот только если в переменной попадется вредноносный код, будет плохо.

  Ответить  
 
 автор: sim5   (25.10.2010 в 19:34)   письмо автору
 
   для: kulibko   (25.10.2010 в 19:20)
 

И в этой переменной постоянно эти значения?

  Ответить  
 
 автор: kulibko   (25.10.2010 в 19:20)   письмо автору
 
 

Добрый вечер.

Есть текстовая переменная

$var = "60*60*24";


Мне нужно получить результат действия 60*60*24 (т.е. исполнить эту текстовую переменную).
Вариант
$rezult = eval($var);

не работает.

Как это сделать?

  Ответить  

Сообщения:  [1-10] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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