формула в строке

Тема в разделе "PHP", создана пользователем Casper_R, 24 фев 2010.

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

    Casper_R Создатель

    Регистр.:
    3 май 2007
    Сообщения:
    87
    Симпатии:
    26
    всем привет.

    есть хранящееся в ячейке мускула мат. выражение. например "35*2"
    при выводе этой штуки в PHP никак не могу добиться того, чтобы это значение высчитывалось!!!
    PHP:
    echo $cost или echo (int)$cost
    выводят лишь "35" ... как победить? заранее спс
     
  2. *mm*

    *mm* Создатель

    Регистр.:
    1 окт 2009
    Сообщения:
    29
    Симпатии:
    2
    Что за переменную Вы выводите?
    Если содержание ячейки, и правильно и будет выводиться 35, как по Вашему база должна посчитать выражение? БД это средство хранения информации.
     
  3. Casper_R

    Casper_R Создатель

    Регистр.:
    3 май 2007
    Сообщения:
    87
    Симпатии:
    26
    спс :) уже разобрался. идея была в том, что в БД хранится некая формула, а не результат. а при выводе PHP ее должен был посчитать (именно пхп понятно, что не БД).
    в общем я просто забыл про функцию eval :)
     
  4. Stern87

    Stern87 Создатель

    Регистр.:
    8 дек 2007
    Сообщения:
    15
    Симпатии:
    1
    изучать функцию eval
     
  5. pingvin1991

    pingvin1991 Писатель

    Регистр.:
    10 июл 2009
    Сообщения:
    7
    Симпатии:
    1
    А если альтернатива?
     
  6. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    есть альтернатива хранить некоторые несложные функции в mysql и там же вычисление делать при выборке
     
  7. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    561
    Парсить. В этой ветке была похожая тема, там выкладывали ссылку на парсер, который производит вычисление, напсанных в текстовом виде формул.
    Если не нужно ничего серьёзного, то можно и в ручную спарсить через preg или прочие:

    PHP:
    preg_match_all('|(\d+?)\*(\d+?)\Z|''10*245'$r);
    echo 
    $r[1][0]*$r[2][0];


    $r explode('*''10*245*10');
    $rez =0;
    foreach(
    $r as $s){
        
    $rez $rez*$s;
    }
    echo 
    $rez
     
  8. sh4m3

    sh4m3 Писатель

    Регистр.:
    28 мар 2010
    Сообщения:
    5
    Симпатии:
    0
    быстрое решение
    PHP:
    <?php
    $code 
    '100*823';
    $code 'return '.$code.';';
    echo eval(
    $code);
     
Статус темы:
Закрыта.