<?php
function add($stack, $nb1, $nb2)
{
array_push($stack, $nb1 + $nb2);
$result = $nb1 + $nb2;
echo $nb1 . ' + ' . $nb2 . ' = ' . $result . "\n";
}
function sub($stack, $nb1, $nb2)
{
array_push($stack, $nb1 - $nb2);
$result = $nb1 - $nb2;
echo $nb1 . ' - ' . $nb2 . ' = ' . $result . "\n";
}
function div($stack, $nb1, $nb2)
{
array_push($stack, $nb1 / $nb2);
$result = $nb1 / $nb2;
echo $nb1 . ' / ' . $nb2 . ' = ' . $result . "\n";
}
function mul($stack, $nb1, $nb2)
{
array_push($stack, $nb1 * $nb2);
$result = $nb1 * $nb2;
echo $nb1 . ' * ' . $nb2 . ' = ' . $result . "\n";
}
function calc($input)
{
$stack = array();
$token = explode(" ", trim($input));
$count = count($token);
// echo $count . "\n";
// print_r($token);
for ($i = 0; $i < $count; $i++) {
$tokenNUm = "";
if (is_numeric($token[$i])) {
array_push($stack, $token[$i]);
print_r($token);
} else {
$nb2 = end($stack);
array_pop($stack);
$nb1 = end($stack);
array_pop($stack);
echo "nb1 : ". $nb1 . "\n";
echo "nb2 : ". $nb2 . "\n";
switch($token[$i]) {
case '+':
add($stack, $nb1, $nb2);
break;
case '-':
sub($stack, $nb1, $nb2);
break;
case '/':
div($stack, $nb1, $nb2);
break;
case '*':
mul($stack, $nb1, $nb2);
break;
default:
die('Error');
}
}
}
return end($stack);
}
$argv[1] = "1 + 2";
echo "Final result = " . calc($argv[1]) . "\n";
- Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.29, 8.2.0 - 8.2.20, 8.3.0 - 8.3.8
- Array
(
[0] => 1
[1] => +
[2] => 2
)
nb1 :
nb2 : 1
+ 1 = 1
Array
(
[0] => 1
[1] => +
[2] => 2
)
Final result = 2
preferences:
295.45 ms | 406 KiB | 473 Q