嗨,我一直在尝试使用 PHP 开发一个 RPN 计算器,并且在程序中的某个时刻,我的数组中突然出现了一个数字 1。我已经用调试器检查了该程序 3 次,但我不明白它来自哪里.这是我的代码:
if(isset($_GET["send"])){
$v0 = $_GET["val0"];
$a = explode(" ", $v0);
$second_array = array();
function operatii($v , $second_array){
$var1 = array_pop($second_array);
$var2 = array_pop($second_array);
$rez = null;
switch ($v){
case '+':
$rez = $var1 + $var2;
break;
case '-':
$rez = $var2 - $var1;
break;
case '*':
$rez = $var1 * $var2;
break;
case '/':
$rez = $var2 / $var1;
break;
}
array_push($second_array, $rez);
print_r($second_array);
echo '<br/>';
}
for($i = 0; $i < count($a); $i++){
if($a[$i] === "+" || $a[$i] === "-" || $a[$i] === "*" || $a[$i] === "/" ){
operatii($a[$i] , $second_array);
continue;
}else{
array_push($second_array, $a[$i]);
}
}
}
?>
<form method="get" action="">
<input type="text" value="<?php ?>" name="val1" disabled/>
<input type="text" value="" name="val0" />
<input type="submit" value="Introdu" name="send"/>
</form>
长话短说,这个表格将采用这样的表达式 5 1 - 5 + 并执行 5 - 1 + 5 的操作。
在for循环运行两次并且operatii()方法运行它的sequence之后出现问题,在方法结束时$rez变量get被推入$second_array。在此之后,方法结束和操作方法之间以及下一个循环迭代的开始 1 被添加到 $second_array 中。
正如我之前提到的,我运行了调试器 3 次,但我找不到任何关于为什么以及从何处将 1 添加到数组中的任何合乎逻辑的解释。谁能告诉我发生了什么以及我该如何纠正它?