function calc($value){
$str_length = strlen($value);
$check_operators = ["+", "-", "*", "/"];
$final_array =[];
$final_operator = [];
$token = "";
foreach(str_split($value) as $items){
if ($items >= '0' && $items <= '9') {
$token .= $items;
}
else{
array_push($final_array, $token);
$token = '';
}
if(in_array($items, $check_operators)){
$final_operator[] = $items;
}
}
array_push($final_array, $token);
foreach(array_reverse($final_operator) as $items){
$a = array_pop($final_array);
$b = array_pop($final_array);
$result = math_operation($b, $a, $items);
array_push($final_array, $result);
}
return array_pop($final_array);
}
function math_operation($a, $b, $operator){
return match($operator){
"+" => $a+$b,
"-" => $a-$b,
"*" => $a*$b,
"/" => $a/$b,
};
}
echo calc("5+5+5+2+2+2+2-10")."<br>"; // Правильно 13
echo calc("5+5+5+2+2+2+2-10+2")."<br>"; // 11 ??
это рекурсия?
можно показать полный код, чтобы я понял алгоритм .