我在$ _POST ['str']中遇到以下错误:
注意:未定义的索引:第12行的C:\ Program Files \ EasyPHP-5.3.8.0 \ www \ strrev.php中的str
我花了太多时间为此寻找答案,但没有运气! 请看一下代码,让我知道它有什么问题?
<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>
它显示错误旁边的文本字段和反向按钮。 而当我按下按钮时也不会发生任何事情。
答案 0 :(得分:6)
将if (trim($_POST['str']))
更改为if (!empty($_POST['str']))
您的if
语句正在尝试修剪不存在的数组索引,从而导致错误。您必须先检查索引是否存在。
如果有人想知道 - 我使用empty
代替isset
作为OP,使用trim
,暗示(或至少,我从此推断)正确设置包含空字符串的$_POST['str']
是不可接受的。但是,这并不能解决$_POST['str']
包含大量空格的情况。
答案 1 :(得分:0)
您没有检查POST是否确实发生过:
<html>
...
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if ($_POST yada yada yada) {
...
}
}
?>
<form action="" method="POST">
...
</form>
...
</html>
答案 2 :(得分:0)
$ str不一定是数组。为了遍历它,它需要是一个数组。 它只是从$ _POST ['str']复制该值,所以当你做帖子时
确保它是带
的数组if (is_array($str))