2012-11-08 46 views
0

我與$ _ POST收到以下錯誤[ '海峽']:

注意:未定義指數:STR在C:\ Program Files文件\的EasyPHP-5.3.8.0 \ WWW \ strrev.php on line 12

我花了太多時間找到答案但沒有運氣! 請看看代碼並讓我知道它有什麼問題?

<html> 
<head> 
<title></title> 
</head> 
<body> 
    <?php 
    if (trim($_POST['str'])) { 
     $str = $_POST['str']; 
    $len = strlen($str); 
     for($i=($len-1); $i>=0;$i--) { 
     echo $str[$i]; 
     } 
} else { 
    ?> 
<form method="post" action=""> 
    <input type="text" name="str" /> 
    <input type="button" name="submit" value="Reverse" /> 
    </form> 
    <?php 
    } 
    ?> 
</body> 
</html> 

它顯示錯誤旁邊的文本字段和反轉按鈕。 而且當我按下按鈕時,什麼都不會發生。

+1

數組沒有錯誤SLEF解釋的?您嘗試訪問$ _POST數組的未定義索引..也許是因爲您還沒有發佈任何內容?去看看「isset」的PHP功能 –

回答

6

變化if (trim($_POST['str']))if (!empty($_POST['str']))

if語句試圖削減數組索引不存在,因此錯誤。您必須先檢查您的索引是否存在。

如果你想知道 - 我用empty代替isset作爲OP,通過使用trim,暗示(或至少,我從這個推斷)有適當設定$_POST['str']包含空字符串是不可接受的。但是,這並不能解決$_POST['str']包含一堆空格的情況。

0

你不檢查,如果一個POST已實際發生:

<html> 
... 
<?php 
if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    if ($_POST yada yada yada) { 
     ... 
    } 
} 
?> 

<form action="" method="POST"> 
... 
</form> 

... 

</html> 
+0

這是不正確的,沒有必要這樣做,isset和空將執行得很好。 – Bot

+0

@Bot,不,它*不*不正確。只是低調Marc的,因爲他低估了你的不公平。先讓你的事實正確。 – phant0m

+0

@ phant0m這是不正確的。你正在檢查是否已完成(不需要),那麼你正在做一個'if($ _POST yada yada yada)'(那是什麼yada yada yada)。這仍然不能解決他的錯誤信息。所以這確實是不正確的。他還取消了他的downvote。我是低調的,因爲它是錯誤的,不會解決OP的問題。 – Bot

0

$ str是不一定的數組。爲了遍歷它,它需要是一個數組。 它只是複製從$ _ POST該值[「海峽」],所以當你的職位要麼

確保它與

if (is_array($str)) 
+0

這是一個好點,但是,這不會解決錯誤。對於OP來說非常好,但需要注意。由於'str'是一個輸入文本框,它實際上不是一個數組而是一個字符串。 – Bot