<?php

/*Задача: написать программу, имитирующую работу обычного кнопочного калькулятора (если у тебя нет калькулятора, можешь
 попробовать запустить его на телефоне/айфоне/компьютере). Калькулятору на вход дается строка, содержащая целые числа и
 знаки  «+», «-», «*» и «=». По знаку «=» калькулятор выводит ответ.

идея примерно такая: мы заводим переменные $result (результат предыдущих действий), $number (число, которое сейчас
набирается) и $op (предыдущая операция). Затем разбираем строку посимвольно (циклом for). Если это цифра — добавляем ее
к числу $number (умножаем на 10 и прибавляем цифру), если это операция — то выполняем предыдущую операцию (которую мы
храним в $op) над $result и $number, сохраняем итог в $result, а текущую операцию на будущее сохраняем в op. Если это
 «=», то выполняем предыдущую операцию и выводим $result   */

$input='123+345=';
$inputLenght=mb_strlen($input);

$number=null; //число, которое сейчас набирается
$result=null; //результат предыдущих действий
$op=null; //предыдущая операция

for ($i=0; $i<$inputLenght; $i++){
    $char=mb_substr($input,$i,1);
    if($char=='+' || $char=='-' || $char=='*' || $char=='/'){
        if(isset($op)){
            switch ($op){
                case '+':
                    $result=intval($result)+intval($number);
                    echo $result;
                    unset($number);
                    $op=$char;
                    break;
                case '-':
                    $result=$result-intval($number);
                    unset($number);
                    $op=$char;
                    break;
                case '/':
                    $result=$result/intval($number);
                    unset($number);
                    $op=$char;
                    break;
                case '*':
                    $result=$result*intval($number);
                    unset($number);
                    $op=$char;
                    break;
            }
        }
        else{
            $op=$char;
        }
    }
    elseif ($char=='='){
        switch ($op){
            case '+':
                $result=$result+intval($number);
                break;
            case '-':
                $result=$result-intval($number);
                break;
            case '/':
                $result=$result/intval($number);
                break;
            case '*':
                $result=$result*intval($number);
                break;
        }
        echo "Result is $result \n";
    }
    elseif (is_numeric($char)){
        if(isset($number)){
            $number=intval($number.$char);
        }
        else{
            $number=intval($char);
        }
    }
    else{
        echo "Corrupt symbol '$char'\n";
    }
}