Вопрос по математике в PHP

Тема в разделе "PHP", создана пользователем monz, 20 янв 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. monz

    monz Создатель

    Регистр.:
    24 авг 2009
    Сообщения:
    37
    Симпатии:
    0
    Столкнулся с такой небольшой проблемкой на PHPшке
    Получаю строку в виде выражения $a = '4335 + (12 * 43)';
    Как сделать чтобы посчитало результат? Пробовал преобразовать строку в число при помощи intval, но не помагает, берет только первое число, а выражение не считает.
    Как это можно организовать самым простым и правильным способом? Думал разбить на массив и считывать символы методом сравнения)) но думаю есть чтото правильное в данной ситуации.
     
  2. VandJ

    VandJ

    Регистр.:
    8 апр 2008
    Сообщения:
    318
    Симпатии:
    113
    A зачем кавычки?
    Вот так тебе все просчитает
    PHP:
    $a 4335 + (12 43);
     
  3. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
  4. monz

    monz Создатель

    Регистр.:
    24 авг 2009
    Сообщения:
    37
    Симпатии:
    0
    Это я просто изобразил что это строка, также я выдераю эту формулу из файла и она получаеться в строчном типе, а нужно это посчитать.

    Добавлено через 2 минуты
    Спасибо, конечно, но это более полезно для общего развития, а здесь нужен конкретный подход на PHP
     
  5. Abliganto

    Abliganto Постоялец

    Регистр.:
    30 ноя 2009
    Сообщения:
    111
    Симпатии:
    46
  6. betatest

    betatest

    Регистр.:
    3 дек 2007
    Сообщения:
    517
    Симпатии:
    127
    пользуйся


    PHP:
    <?php
    $a 
    '4335 + (12 * 43)';  
    function 
    calc_string$mathString )
    $cf_DoCalc create_function("""return (" $mathString ");" ); return $cf_DoCalc(); };
    $b=calc_string($a);
    echo(
    "b = $b");
    ?> 
    а это какая-то навороченная обработка, но платная

    http://mathparser.forwebm.net/manual/

     
  7. lucky_priest

    lucky_priest Создатель

    Регистр.:
    16 ноя 2009
    Сообщения:
    20
    Симпатии:
    7
    чего-то все мудрено как-то...
    если в формуле только числа, то вот так отлично работает =)
    PHP:
    $a "4335 + (12 * 43)";
    echo eval(
    "return (".$a.");");
     
  8. betatest

    betatest

    Регистр.:
    3 дек 2007
    Сообщения:
    517
    Симпатии:
    127
    угу, только если там будет еще что-то, то совсем не правильно это
    если брать из текстового файла и не быть уверенным в надежности кода в строке (а евал именно это и подразумевает), то лучше этот вариант не использовать

    а если такой "текстовый файл" создавать изначально, с верными пхп выражениями, то наоборот - даже предпочтительней
     
  9. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Непонятно какой конечный результат вы хотите получить?
    Сравните:
    PHP:
    echo  '4335 + (12 * 43)'.'<br/>';
    echo  
    "4335 + (12 * 43)".'<br/>';
    echo   
    4335 + (12 43).'<br/>';
     
  10. Дикс

    Дикс Читатель

    Заблокирован
    Регистр.:
    24 май 2008
    Сообщения:
    11
    Симпатии:
    1
    всегда разбирал такое через eval
     
Статус темы:
Закрыта.