分类:
2008-05-29 09:45:41
php程序员站
phperz.com
{
$line =file($this->file); phperz.com
}
return $line;
}
// 打开数据文件---以二维数组返回文件内容
function openFile() {
phperz~com
if (file_exists($this->file)) {
$f =file($this->file);
phperz.com
$lines = array();
foreach ($f as $rawline) {
php程序员之家
$tmpline = explode("\x0E",$rawline);
array_push($lines, $tmpline);
www~phperz~com
}
}
return $lines;
} phperz.com
// 传入一个数组,合并成一行数据,重写整个文件
function overwrite($array){
$newline = implode("\x0E",$array);
php程序员站
$f = fopen($this->file,"w");
flock($f,LOCK_EX);
www~phperz~com
fputs($f,$newline);
fclose($f);
}
php程序员站
// 添加一行数据记录到文件末端
function add_line($array,$check_n=1) {
$s=implode("\x0E",$array);
php程序员之家
$f=fopen($this->file,"a");
flock($f,LOCK_EX); www~phperz~com
fputs($f,$s);
if ($check_n==1) fputs($f,"\n");
php程序员站
fclose($f);
}
// 插入一行数据记录到文件最前面
function insert_line($array) {
phperz.com
$newfile = implode("\x0E",$array);
$f = fopen($this->file,"r");
php程序员站
flock($f,LOCK_SH);
while ($line = fgets($f,1024)) {
php程序员站
$newfile .= $line;
}
fclose($f);
php程序员站
$f = fopen($this->file,"w");
flock($f,LOCK_EX); www~phperz~com
fputs($f,$newfile);
fclose($f);
}
// 更新所有符合条件的数据记录,适用于每行字节数据较大的情况 www~phperz~com
function update($column,$query_string,$update_array) {
$update_string = implode("\x0E",$update_array);
php程序员之家
$newfile = "";
$fc=file($this->file); php程序员站
$f=fopen($this->file,"r");
flock($f,LOCK_SH);
for ($i=0;$i<count($fc);$i++) {
$list = explode("\x0E",$fc[$i]); phperz~com
if ($list[$column] != $query_string) {
$newfile = $newfile.chop($fc[$i])."\n";
} else {
$newfile = $newfile.$update_string;
}
}
fclose($f);
$f=fopen($this->file,"w");
php程序员之家
flock($f,LOCK_EX);
fputs($f,$newfile);
fclose($f); php程序员站
}
// 更新所有符合条件的数据记录,适用于每行字节数据较小的情况
function update2($column,$query_string,$update_array) {
$newline = implode("\x0E",$update_array);
phperz.com
$newfile = "";
$f = fopen($this->file,"r");
flock($f,LOCK_SH);
while ($line = fgets($f,1024)) {
phperz.com
$tmpLine = explode("\x0E",$line);
if ($tmpLine[$column] == $query_string) {
$newfile .= $newline;
} else {
www~phperz~com
$newfile .= $line;
}
}
www~phperz~com
fclose($f);
$f = fopen($this->file,"w"); phperz.com
flock($f,LOCK_EX);
fputs($f,$newfile);
fclose($f); phperz~com
}
// 删除所有符合条件的数据记录,适用于每行字节数据较大的情况
function delete($column,$query_string) {
$newfile = ""; phperz.com
$fc=file($this->file);
$f=fopen($this->file,"r");
flock($f,LOCK_SH);
for ($i=0;$i<count($fc);$i++) {
$list = explode("\x0E",$fc[$i]);
if ($list[$column] != $query_string) { www~phperz~com
$newfile = $newfile.chop($fc[$i])."\n";
}
phperz.com
}
fclose($f);
$f=fopen($this->file,"w"); php程序员站
flock($f,LOCK_EX);
fputs($f,$newfile);
fclose($f);
}
// 删除所有符合条件的数据记录,适用于每行字节数据较小的情况
function delete2($column,$query_string){
$newfile = ""; www~phperz~com
$f = fopen($this->file,"r");
flock($f,LOCK_SH);
php程序员之家
while ($line = fgets($f,1024)) {
$tmpLine = explode("\x0E",$line);
php程序员站
if ($tmpLine[$column] != $query_string) {
$newfile .= $line;
}
}
fclose($f);
$f = fopen($this->file,"w");
php程序员站
flock($f,LOCK_EX);
fputs($f,$newfile);
fclose($f);
php程序员之家
}
//取得一个文件里某个字段的最大值
function get_max_value($column) {
$tlines = file($this->file);
phperz~com
for ($i=0;$i<=count($tlines);$i++) {
$line=explode("\x0E",$tlines[$i]); phperz~com
$get_value[]=$line[$column];
}
$get_max_value = max($get_value);
return $get_max_value;
}
// 根据数据文件的某个字段是否包含$query_string进行查询,以二维数组返回所有符合条件的数据
function select($column, $query_string) { www~phperz~com
$tline = $this->openfile();
$lines = array();
foreach ($tline as $line) { phperz.com
if ($line[$column] == $query_string) {
array_push($lines, $line); phperz.com
}
}
return $lines;
} php程序员站
// 功能与function select()一样,速度可能略有提升
function select2($column, $query_string) {
if (file_exists($this->file)) { phperz.com
$tline = $this->read_file();
foreach ($tline as $tmpLine) {
php程序员之家
$line = $this->make_array($tmpLine);
if ($line[$column] == $query_string) {
phperz~com
$lines[]=$tmpLine;
} php程序员站
}
}
return $lines;
} phperz~com
// 根据数据文件的某个字段是否包含$query_string进行查询,以一维数组返回第一个符合条件的数据
function select_line($column, $query_string) {
$tline = $this->read_file();
foreach ($tline as $tmpLine) {
$line = $this->make_array($tmpLine); phperz.com
if ($line[$column] == $query_string) {
return $line; php程序员之家
break;
}
}
} php程序员之家
// select next/prev line(next_prev ==> 1/next, 2/prev) by cx
function select_next_prev_line($column, $query_string, $next_prev) {
$tline = $this->read_file();
$line_key_end = count($tline) - 1; php程序员站
$line_key = -1;
foreach ($tline as $tmpLine) {
$line_key++;
$line = $this->make_array($tmpLine);
if ($next_prev == 1) { // next?
phperz.com
if ($line[$column] == $query_string) {
if ($line_key == 0) { phperz.com
return 0;
} else { phperz~com
$line_key_up = $line_key - 1;
return $up_line; www~phperz~com
}
} else {
$up_line = $line;
phperz.com
}
} elseif ($next_prev == 2) { // prev?
if ($line[$column] == $query_string) {
if ($line_key == $line_key_end) {
return 0;
} else { php程序员站
$line_key_down = $line_key + 1;
break;
}
}
} else { phperz.com
return 0;
}
}
www~phperz~com
$down_line = $this->make_array($tline[$line_key_down]);
return $down_line; php程序员站
}
}
?>