2016-10-03 59 views
-1

我不知道我做錯了什麼。但是,我得到這個接收錯誤:注意:未定義的變量 - 但已經定義

Notice: Undefined variable: num1 in D:\Programs\XAMPP\htdocs\homework\addsub.php on line 15`

<?php 
    if(isset($_POST['sub'])) 
    { 
     $num1=$_POST['t1']; 
     $num2=$_POST['t2']; 
     if ($_POST['sub']=="+") { 
      $res= $num1 + $num2; 
     } 
     elseif($_POST['sub']=="-"){ 
      $res = $num1-$num2; 
     } 
    } 
?> 
<form action="addsub.php" method="POST"> 
    <input type="text" name="t1" value="<?php echo $num1;?>"><br> 
    <input type="text" name="t2" value="<?php echo $num2;?>"><br> 
    <input type="text" name="res" value="<?php echo $res;?>"><br> 
    <input type="submit" name="sub" value="+"> 
    <input type="submit" name="sub" value="-"> 
</form> 

當我在文本框的值使用$num1$num2,它顯示錯誤。我的一位朋友在他的筆記本電腦上使用了相同的代碼,但他使用的是舊版本的Xampp。它工作正常,但後來版本的Xampp提供了這個錯誤。我正在使用Xampp v3.2.1

+0

爲[masterFly(http://stackoverflow.com/a/39824665/1028804)曾表示你的問題是,只有'$ num1'如果設置了$ _POST ['sub']',則存在,因此您需要在if語句之前將'$ num1'和'$ num2'設置爲某種默認值,或者在isset($ _ POST [ '子'])'。因爲這是一個通知,它可能是其他版本的Xampp,你已經嘗試過關閉錯誤報告,所以它不會與Xampp版本有關,而是Xampp實例的PHP設置 –

回答

1

使用isset來檢查變量是否存在。

例如

<input type="text" name="t1" value="<?php echo isset($num1)?$num1:""; ?>"><br> 
+0

isset ($ NUM1)$ NUM1: 「」;工作?你能解釋一下嗎? –

+0

它的檢查,如果$ num1 isset然後回顯它的價值,否則回聲空白值,如果你的變量沒有設置,然後PHP代碼永遠不會給你錯誤。當你在輸入字段中傳遞值時總是使用這種方法。和isset($ num1)?$ num1:「」;是以前的轉型運營商的手段?我們需要檢查並檢查後的狀況?是條件爲真時將回顯的值,否則後面的值將爲回顯。 – shubham715

4

或者,如果它不存在,像這樣初始化變量:

<?php 
if (!isset($num1)) { 
    $num1 = ''; 
} 

那麼你的HTML可以保持不變。

我推薦這種方法的原因是,它創造乾淨的代碼 - 的HTML會始終顯示的$ NUM1的值,如果您選擇稍後將其初始化爲不同的值,它應該是更容易找到的PHP。

1

您設置$num1變量時,才

if(isset($_POST['sub'])) 

所以,如果$_POST['sub']是不存在的變量是不確定的!

0

下面是代碼,它可以幫助你:

<?php 
    var $res=""; 
    var $num1=""; 
    var $num2=""; 
    if(isset($_POST['sub'])) 
    { 
     $num1=$_POST['t1']; 
     $num2=$_POST['t2']; 
     if ($_POST['sub']=="+") { 
      $res= $num1 + $num2; 
     } 
     elseif($_POST['sub']=="-"){ 
      $res = $num1-$num2; 
     } 
    } 
?> 

<form action="addsub.php" method="POST"> 
    <input type="text" name="t1" value="<?php echo $num1;?>"><br> 
    <input type="text" name="t2" value="<?php echo $num2;?>"><br> 
    <input type="text" name="res" value="<?php echo $res;?>"><br> 
    <input type="submit" name="sub" value="+"> 
    <input type="submit" name="sub" value="-"> 
</form>