遍历日志文件并打印

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

function load($file)
{
  //No.1
  //开始写代码,读取日志文件
  $file = fopen($file,'r');
  $contents = array();
  while(!feof($file))
  {
    $contents[] = fgets($file);
  }
  return $contents;
}

function eliminate($lines)
{
  $new = array();
  foreach($lines as $line)
  {
    list($dul,) = explode("\t", $line, 2);

    if(isset($new[$dul]))
    {
      $line = str_replace($dul,"\t",$line);
    }
    $new[$dul][] = $line;
  }
  return $new;
}

function qSort($array)
{
  $length = count($array);
  if(count($array)<=1)
    return $array;
  //No.2
  //开始写代码,对时间戳进行从小到大排序 快速排序
  $left_array=$right_array=array();
  //使用for循环进行遍历,把第一个元素当做比较的对象
  for($i=1;$i<$length;$i++)
  {
    //判断当前元素的大小
    if($array[$i]<$array[0]){
      $left_array[]=$array[$i];
    }else{
      $right_array[]=$array[$i];
    }
  }
  //递归调用
  $middle=$array[0];

  //end_code
  return array_merge(qSort($left_array),array($middle),qSort($right_array));
}

$newFile = '';
$data = eliminate(load('aa.log'));
//No.3
//开始写代码,调用函数,将日志中的数据排序,并将重新排好序的数据写入文件
$keys = array_keys($data);
//sort($keys); //其实不用快速排序 直接将键值sort即可
$keys = qSort($keys);
$newsFile = array();
foreach($keys as $value)
{
  $newsFile[] = implode('\n', $data[$value]);
}
$newsFile = implode(' ', $newsFile);
//end_code
file_put_contents('bb.dat',$newsFile);
?>

面试题:考察 快速排序,文件的用法

当时时间的限制没做出来,后来花了一个小时终于弄出来。看来我还是很笨的。。。加油。。。找工作。。。

原文地址:https://www.cnblogs.com/sxiangyues/p/6529924.html