我使用此代码读取文件,我在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
答案 0 :(得分:0)
那么,你的页面第一次加载怎么样?如果未设置$_POST['submit']
,则$ExistingSongs
将为null
。 in_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()
时的字符串,因此是您的错误。