こんにちは、私は 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 ループが 2 回実行され、operatii() メソッドがシーケンスを実行した後に発生し、メソッドの最後で $rez 変数が $second_array にプッシュされます。この後、メソッドが終了し、operatii メソッドと次のループ反復の開始の間で 1 が $second_array に追加されます。
前に述べたように、デバッガーを 3 回実行しましたが、その 1 が配列に追加されている理由と場所に関する論理的な説明を見つけることができません。