使用字符串时,对于第二个参数的错误数据类型,请注意in_array()

时间:2012-04-21 23:05:24

标签: php arrays debugging

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

3 个答案:

答案 0 :(得分:0)

那么,你的页面第一次加载怎么样?如果未设置$_POST['submit'],则$ExistingSongs将为nullin_array抱怨这是正确的。

如果您在开发时已启用所有错误 - 使用error_reporting(E_ALL | E_STRICT)php.ini完成 - 那么您还会收到关于$ExistingSongs是未定义变量的通知。< / p>

答案 1 :(得分:0)

如果未设置$_POST['submit']变量,$ExistingSongs变量仍未定义,可能会导致警告。

答案 2 :(得分:-1)

stripslashes期望一个字符串作为输入,并输出一个字符串:http://php.net/stripslashes

$ SongToAdd是您拨打in_array()时的字符串,因此是您的错误。