我想从文件中读取日志并在管理员面板中将其显示为列表。我非常确定这段代码应该可行,但显然它并没有。循环不会在列表中打印任何内容,循环上方的两行只打印文件中的第一行。我想问题在于构造数组namespace
。由于这个项目是我第一次使用PHP(通常我使用的是C),所以不要判断。
log
任何帮助都将不胜感激。
答案 0 :(得分:2)
而不是
$log=fopen("file.log", "r");
使用
$log=file("file.log");
同时将while循环更改为
foreach($log as $logline) {
// print $logline the way you want
}
您的代码无效的原因是fopen返回文件的句柄,您需要使用特殊函数:fread, fclose, feof
等。file()
函数读取将整个文件放入一个数组(每个元素都是一行),因此对于中小型文本文件来说,这是一种理想的方式。
答案 1 :(得分:0)
fopen返回文件处理程序,而不是数组。要逐行阅读,您可以在while循环中使用fgets:
while (($line = fgets($log)) !== false) {
$asdf[$i] = sprintf ("<option >%s</option>", $line);
}
答案 2 :(得分:0)
而不是一会儿,也许使用foreach?
while ($log[$i]!=null) {
$asdf[$i] = sprintf ("<option >%s</option>", $log[$i]);
echo $asdf[$i];
$i++; //this loop is the problem, doesn't print anything.
}
=&GT;
foreach ($logs as $log) {
$asdf[$i] = sprintf ("<option >%s</option>", $log);
echo $asdf[$i];
$i++; //this loop is the problem, doesn't print anything.
}
这样的东西?