1生成一个10000行文本文件,每行一个随机数字
2统计这个文件里面每个数字重复出现的次数
//求更有效率的方法
<?php
//1生成一个10000行文本文件,每行一个随机数字
for($i=0;$i<10000;$i++)
{
file_put_contents("1.txt",rand(0,1000)."\n",FILE_APPEND);
}
//2统计这个文件里面每个数字重复出现的次数
$a=fopen("1.txt","r");
$list=array();
$tj=array();
while($b=fgets($a))
{
$list[]=$b;
if(in_array($b,$list))
{
$tj[$b]+=1;
}
}
//$re=array_count_values($list); //不能使用这个函数
echo "<pre>";
var_dump($tj);
echo "</pre>";

解决方案 »

  1.   

    按你的思路,统计部分,这样更好,
    while($b=fgets($a))
    {
            if(isset($list[$b]))
    {
    ++$list[$b];
    }
    else
    {
    $list[$b] = 1;
    }
    }
      

  2.   

    看错变量了,统计应该是++$tj[$b]; $tj[$b] = 1;
      

  3.   

    哪里不对呢?依照你的思路,这是O(n)的复杂度了,原来给出的代码是O(n^2)实际上,array_count_values也是需要遍历数组的,算法复杂度也是O(n)只不过内置函数,通常执行时间更短一些