快捷的方式找到文件中查找
类似于以下内容,其中<filename>
是文件的路径。
$file = fopen('<filename>', 'r');
$a = 0;
$b = 0;
$first = true;
while (fscanf($file, '%d%d', $a, $b)) {
if ($first)
{
$min = $b;
$max = $b;
$total = $b;
$count = 1;
$first = false;
}
else
{
$total += $b;
if ($b < $min) $min = $b;
if ($b > $max) $max = $b;
$count++;
}
}
$avg = $total/$count;
这是给我“呼叫时间通过引用已被弃用”是否可以,如果我删除&? – user391986 2012-04-25 22:37:00
如果我这样做给我“未定义的变量a” – user391986 2012-04-25 22:38:46
@ user391986:啊,是的,我相信你可以。您可能必须将'$ a'和'$ b'预设为默认值。查看更新。还添加了示例如何用['fopen'](http://php.net/fopen)打开文件 – mellamokb 2012-04-25 22:38:47
从制造代码@mellamokb一些性能改进:
$file = fopen('<filename>', 'r');
$a = $b = 0;
if (fscanf($file, '%d%d', $a, $b))
{
$min = $max = $total = $b;
$count = 1;
while (fscanf($file, '%d%d', $a, $b))
{
$total += $b;
if ($b < $min) $min = $b;
else if ($b > $max) $max = $b;
++$count;
}
$avg = $total/$count;
}
else
{
// Do something here as there is nothing in the file
}
性能改进?功能上看起来相同,尽管更简洁一点。除非'if($ first)'的运行速度比我想象的要慢得多;-) – mellamokb 2012-04-26 13:40:55
在第一行之后的每一行保存'if $ first'。如果它找到了新的最小值,也跳过检查。这取决于我想的文件的大小。 – 2012-04-26 13:43:04
PHP已经拥有的东西按行来解析文件....这是一个调用的函数...'文件()' 也就是说,@ mellamokb的解决方案非常好,它解决了解析以及在PHP代码之外拆分文件,因此它应该比纯粹的PHP代码更快。 – Christian 2012-04-25 22:48:22
文件大小是多少? – 2012-04-26 04:52:57