0

$_POST['str'] で次のエラーが発生します。

Notice: 未定義のインデックス: C:\Program Files\EasyPHP-5.3.8.0\www\strrev.php の 12 行目の 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>

エラーの横にテキスト フィールドと [Reverse] ボタンが表示されます。また、ボタンを押しても何も起こりません。

4

3 に答える 3

6

if (trim($_POST['str']))に変更if (!empty($_POST['str']))

ifステートメントが存在しない配列インデックスをトリミングしようとしているため、エラーが発生します。最初にインデックスが存在するかどうかを確認する必要があります。

誰かが疑問に思っている場合に備えて、空の文字列を含む適切なセットは受け入れられないことを暗示していemptyます(または少なくとも、これから推測しました) 。ただし、これは多数のスペースが含まれるケースを修正しません。issettrim$_POST['str']$_POST['str']

于 2012-11-08T15:55:41.870 に答える
0

POST が実際に発生したかどうかを確認していません。

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

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

...

</html>
于 2012-11-08T15:58:00.637 に答える
0

$str は必ずしも配列ではありません。それをループするには、配列である必要があります。$_POST['str'] からその値をコピーするだけなので、投稿を行うときにどちらか

それが配列であることを確認してください

if (is_array($str))
于 2012-11-08T16:14:32.643 に答える