为什么最后会多输出一行
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
7
Ada Lovelace
7
Adele Goldberg
7
Alan Turing
7
Anakin Skywalker
7
Angry Video Game Nerd
7
Anita Borg
7
Barbara Liskov
7
Bill Gates
7
Bill Joy
7
Bjarne Stroustroup
7
Buffy Summers
7
Charles Babbage
7
Dana Scully
7
Deanna Troi
7
Donald Knuth
7
Edsger Dijkstra
7
Ellen Ripley
7
Frances Allen
7
Gordon Moore
7
Grace Hopper
7
Jadzia Dax
7
James Gosling
7
Jeannette Wing
7
Kathryn Janeway
7
Lara Croft
7
Leeloo
7
Leia Organa
7
Lenore Blum
7
Marissa Mayer
7
Marty Stepp
7
Mary Lou Jepsen
7
Ms Frizzle
7
Natalie Portman
7
Niklaus Wirth
7
Nostalgia Critic
7
Nyota Uhura
7
Oldspice Guy
7
Rasmus Lerdorf
7
Richard Stallman
7
River Tam
7
Roberta Williams
7
Rosie O Donnell
7
Sarah Connor
7
Seven of Nine
7
Stewie Griffin
7
Stuart Reges
7
Tpol
7
Trinity
7
Tyler Durden
7
Valentina Tereshkova
7
Vint Cerf
7
Yukihiro Matsumoto
1
End of file
Notice : Undefined offset: 6 in D:/Program Files/EasyPHP-5.3.6.0/www/hw4/matches.php on line 75
Notice : Undefined offset: 5 in D:/Program Files/EasyPHP-5.3.6.0/www/hw4/matches.php on line 75
Notice : Undefined offset: 4 in D:/Program Files/EasyPHP-5.3.6.0/www/hw4/matches.php on line 75
Notice : Undefined offset: 3 in D:/Program Files/EasyPHP-5.3.6.0/www/hw4/matches.php on line 75
Notice : Undefined offset: 2 in D:/Program Files/EasyPHP-5.3.6.0/www/hw4/matches.php on line 75
Notice : Undefined offset: 1 in D:/Program Files/EasyPHP-5.3.6.0/www/hw4/matches.php on line 75
53 Array ( [0] => Angry Video Game Nerd [1] => M [2] => 29 [3] => ISTJ [4] => Mac OS X [5] => 1 [6] => 99 )
Ada Lovelace
7
Adele Goldberg
7
Alan Turing
7
Anakin Skywalker
7
Angry Video Game Nerd
7
Anita Borg
7
Barbara Liskov
7
Bill Gates
7
Bill Joy
7
Bjarne Stroustroup
7
Buffy Summers
7
Charles Babbage
7
Dana Scully
7
Deanna Troi
7
Donald Knuth
7
Edsger Dijkstra
7
Ellen Ripley
7
Frances Allen
7
Gordon Moore
7
Grace Hopper
7
Jadzia Dax
7
James Gosling
7
Jeannette Wing
7
Kathryn Janeway
7
Lara Croft
7
Leeloo
7
Leia Organa
7
Lenore Blum
7
Marissa Mayer
7
Marty Stepp
7
Mary Lou Jepsen
7
Ms Frizzle
7
Natalie Portman
7
Niklaus Wirth
7
Nostalgia Critic
7
Nyota Uhura
7
Oldspice Guy
7
Rasmus Lerdorf
7
Richard Stallman
7
River Tam
7
Roberta Williams
7
Rosie O Donnell
7
Sarah Connor
7
Seven of Nine
7
Stewie Griffin
7
Stuart Reges
7
Tpol
7
Trinity
7
Tyler Durden
7
Valentina Tereshkova
7
Vint Cerf
7
Yukihiro Matsumoto
1
End of file
Notice : Undefined offset: 6 in D:/Program Files/EasyPHP-5.3.6.0/www/hw4/matches.php on line 75
Notice : Undefined offset: 5 in D:/Program Files/EasyPHP-5.3.6.0/www/hw4/matches.php on line 75
Notice : Undefined offset: 4 in D:/Program Files/EasyPHP-5.3.6.0/www/hw4/matches.php on line 75
Notice : Undefined offset: 3 in D:/Program Files/EasyPHP-5.3.6.0/www/hw4/matches.php on line 75
Notice : Undefined offset: 2 in D:/Program Files/EasyPHP-5.3.6.0/www/hw4/matches.php on line 75
Notice : Undefined offset: 1 in D:/Program Files/EasyPHP-5.3.6.0/www/hw4/matches.php on line 75
53 Array ( [0] => Angry Video Game Nerd [1] => M [2] => 29 [3] => ISTJ [4] => Mac OS X [5] => 1 [6] => 99 )
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
红色部分的代码是,在while循环读文件前声明一个$countl = 0;在循环中countl++;
在while循环之后
echo $countl;出来的,
而文件一共52行。
-----
多读出来一行,在while循环中对行处理时,最后会出问题,例如装载到list() = $array。时,第53行-空行,会出现 undefined lines。
----
搜索到,
================================================================================
SanZhiYuan 发表于 2009-08-07 10:19
那个是文件结束符eof吧
网鬼
发表于 2009-08-07 22:47
可能是txt的结尾有空行,但fgets还是会读取到,这样,最后一条记录的三个值其实都是空值,FirstName, LastName应该是字符型,所以是空值,而Age的类型你应该是整型的,所以Mysql自动将空值转为0
这也是由于你代码写得不够严谨造成的
首先$rawLine = fgets($fileHandle, 4096);可以写为
$rawLine = trim(fgets($fileHandle, 4096));
fgets读取的一行中是包括最后的换行符的
$columns = preg_split("//s+/", $rawLine);
应该是插入数据库之前判断一下$columns不能是空值或是使用preg_split中可能出现错误,从而保证插入数据库的数据的正确性
if($columns) {
//mysql_query("INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('$columns[0]', '$columns[1]', '$columns[2]')");
}
这也是由于你代码写得不够严谨造成的
首先$rawLine = fgets($fileHandle, 4096);可以写为
$rawLine = trim(fgets($fileHandle, 4096));
fgets读取的一行中是包括最后的换行符的
$columns = preg_split("//s+/", $rawLine);
应该是插入数据库之前判断一下$columns不能是空值或是使用preg_split中可能出现错误,从而保证插入数据库的数据的正确性
if($columns) {
//mysql_query("INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('$columns[0]', '$columns[1]', '$columns[2]')");
}
================================================================================
问题解决,在list前面加了一句判断:
终于解决了读文件多读一个空行,然后不加判断存入list() = $array中,导致undefined offset的问题。