Basic Math solver from a string help!
Posted: Wed Mar 22, 2006 7:57 pm
I am writing a basic math solver that will follow order of operations. my problem comes in when numbers with numbers after the decimal come into play with multiplication and division. For example
results in
please help! 
Code: Select all
<?php
echo(solve("2/3*6"));
echo('<br>');
echo(solve(".5*10"));
function solve($temp){
$z = false;
while(!$z){
$exp = explode('/', $temp, 2);
if(count($exp) == 2){
$part = $exp[0];
$part2 = $exp[1];
$p1a = split('[*+-/]', $part);
$count = count($p1a) - 1;
$p1 = $p1a[$count];
$p2a = split('[*+-/]', $part2);
$p2 = $p2a[0];
$p3 = $p1/$p2;
$temp = str_replace("$p1/$p2",$p3,$temp);
}
else{
$z = true;
}
}
$z = false;
while(!$z){
$exp = explode('*', $temp, 2);
if(count($exp) == 2){
echo('Working the multiplecation<br>');
$part = $exp[0];
$part2 = $exp[1];
$p1a = split('[*+-/]', $part);
$count = count($p1a) - 1;
$p1 = $p1a[$count];
$p2a = split('[*+-/]', $part2);
$p2 = $p2a[0];
$p3 = $p1*$p2;
$temp = str_replace("$p1*$p2",$p3,$temp);
}
else{
$z = true;
}
}
$z = false;
while(!$z){
$exp = explode('-', $temp, 2);
if(count($exp) == 2){
$part = $exp[0];
$part2 = $exp[1];
$p1a = split('[*+-/]', $part);
$count = count($p1a) - 1;
$p1 = $p1a[$count];
$p2a = split('[*+-/]', $part2);
$p2 = $p2a[0];
$p3 = $p1-$p2;
$temp = str_replace("$p1-$p2",$p3,$temp);
}
else{
$z = true;
}
}
$z = false;
while(!$z){
$exp = explode('+', $temp, 2);
if(count($exp) == 2){
$part = $exp[0];
$part2 = $exp[1];
$p1a = split('[*+-/]', $part);
$count = count($p1a) - 1;
$p1 = $p1a[$count];
$p2a = split('[*+-/]', $part2);
$p2 = $p2a[0];
$p3 = $p1+$p2;
$temp = str_replace("$p1+$p2",$p3,$temp);
}
else{
$z = true;
}
}
return $temp;
}
?>Code: Select all
0.6.66666666679
.50