За последние 24 часа нас посетили 91782 программиста и 5088 роботов. Сейчас ищут 2077 программистов ...

Преобразование строки с выражением ("2+2") в число

Тема в разделе "PHP для новичков", создана пользователем Germanovich_Yan, 25 сен 2016.

  1. Germanovich_Yan

    Germanovich_Yan Новичок

    С нами с:
    25 сен 2016
    Сообщения:
    3
    Симпатии:
    0
    Подскажите пожалуйста как вывести результат вычислений (в данном случае 4)
    PHP:
    1. $x = "2";
    2. $y="2";
    3. $operation="+";
    4. $result=$x.$y.$operation  //"2+2"
     
    #1 Germanovich_Yan, 25 сен 2016
    Последнее редактирование модератором: 25 сен 2016
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Эм. Ну вообще, если не использовать стандартные функции а-ля eval, то это достаточно непростая задача. В трёх словах в форуме не описать. Гуглите "польская запись", как пример.
     
  3. Germanovich_Yan

    Germanovich_Yan Новичок

    С нами с:
    25 сен 2016
    Сообщения:
    3
    Симпатии:
    0
    А как с помощью какой-нибудь стандартной функции не подскажите?
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    Поправка - "обратная польская нотация".
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    Поищи php math expression parser

    Вот например https://github.com/aboyadzhiev/php-math-parser
    PHP:
    1. <?php
    2.  
    3. $parser = new \Math\Parser();
    4. $expression = '1 + 2 * 3 * ( 7 * 8 ) - ( 45 - 10 )';
    5. $result = $parser->evaluate($expression);
    6.  
    7. echo $result; //302
     
    Germanovich_Yan нравится это.
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    Во, судя по тому, что происходит в исходниках, там как раз обратная полька :)
     
    denis01 нравится это.
  7. Germanovich_Yan

    Germanovich_Yan Новичок

    С нами с:
    25 сен 2016
    Сообщения:
    3
    Симпатии:
    0
    Спасибо большое)
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    Germanovich_Yan нравится это.