1

我使用此代码读取文件,我在 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 回答