<?php
    mb_internal_encoding('utf-8');
    
    function calculate($op, $numberText, $total) {
        switch ($op) {
                case '':
                    $total = floatval($numberText);
                    break;
                case '+': 
                    $total += floatval($numberText);
                    break;
                case '-':
                    $total -= floatval($numberText);
                    break;
                case '*':
                    $total *= floatval($numberText);
                    break;
                case '/':
                    $total /= floatval($numberText);
                    break;
        }
        return $total;
    }
    
    $operator = array('+', '-', '*', '=', '/');
    
    $input = '-2.43+3.62/2.1*9.02=';
    $inputLength = mb_strlen($input);
    
    $numberText = '';
    $result = 0;
    $op = '';
    
    for ($i = 0; $i < $inputLength; $i++) {
        $char = mb_substr($input, $i, 1);
        
        if (in_array($char, $operator)) {
            if ($char == '=') {
                $result = calculate($op, $numberText, $result);
            } else {
                $result = calculate($op, $numberText, $result);
            }
            echo "op = [$op], number = [$numberText], result = [$result], char = [$char]\n";
            $numberText = '';
            $op = $char;
        } elseif (is_numeric($char) || $char == '.') {
            $numberText .= $char;
        } else {
            echo "Непонятный символ. Работа программы прекращена\n";
            exit();
        }
    }
    
    echo "{$input}{$result}";