1

このコードを使用してファイルから読み取ると、2 番目の引数のデータ型が間違っているため、in_array() でエラー警告が表示されます。

if (isset($_POST['submit'])) {
  $SongToAdd = stripslashes($_POST['SongName']) . "\n";
  $ExistingSongs = array();

  if (file_exists("SongOrganizer/songs.txt") && filesize("SongOrganizer/songs.txt") > 0) {
    $ExistingSongs = file("SongOrganizer/songs.txt");
  }
}

if (in_array($SongToAdd, $ExistingSongs)) {
  echo "<p>The song you entered already exists!<br />\n";
  echo "Your song was not added to the list.</p>";

テキスト ファイルには次のものが含まれます。

Bang Bang
Doctor
Hello
Ice Cream Man
Show Me
Doctor
4

3 に答える 3

0

さて、あなたのページが最初にロードされたときはどうですか? $_POST['submit']が設定されていない場合は$ExistingSongsになりますnullin_arrayそれについて文句を言うのは正しい。

すべてのエラーを有効にして開発していた場合(使用error_reporting(E_ALL | E_STRICT)または経由で実行) 、未定義の変数であるphp.iniという通知も受け取っていたはずです。$ExistingSongs

于 2012-04-21T23:07:40.610 に答える
0

$_POST['submit']変数が設定されていない場合、$ExistingSongs変数は未定義のままになり、警告が発生する可能性があります。

于 2012-04-21T23:08:23.027 に答える
-1

stripslashes は入力として文字列を想定し、文字列を出力します: http://php.net/stripslashes

$SongToAdd は、呼び出したときの文字列in_array()であるため、エラーになります。

于 2012-04-21T23:08:14.847 に答える