欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP 文件读入到数组

程序员文章站 2022-05-24 12:23:25
...
为了处理方便,我利用 fgets() 定义了一个函数,可将文件内容读入到一个数组,文件第 i 行对应数组第 i 个元素(index 是 i-1)。下面是源代码
function file2array($filename){    
    // read a file into an array
    // each element of the array is a line of file
    // also use explode("\r\n", file_get_contents($filename))
    $f = fopen($filename,"r") or die("Unable to open the file '" . $filename . "'!");
    $array=array();
    while(!feof($f)) {
  array_push($array, str_replace("\r\n","",fgets($f)));
}
fclose($f);
return $array;
}

我用
str_replace("\r\n","",fgets($f))
的原因是,fgets 会把换行符也读入进来,可以用 count() 检验字符串的长度,会发现读入的每一行都文件中对应的行多了两个字符。等价的程序是

explode("\r\n", file_get_contents($filename))

用下面的代码可以将数组还原为(写入)文件。

function array2file($array, $filename, $mode="w"){
    // write an array (1-dim) in a file
    $f = fopen($filename, $mode) or die("Unable to open the file '" . $filename . "'!");
    // $f = savefopen($filename, $mode);
    if (! empty($array)) {
        $first=array_shift($array);
        fwrite($f, $first);
        foreach ($array as $line) {
            fwrite($f, "\r\n" . $line);
        }
    }
    fclose($f);
}

我还写了一些简单有用的文件操作函数,供大家使用。

function file2str($filename){    
    // read a file into a string
    $f = fopen($filename,"r");
    $str="";
    while(!feof($f)) {
  $str .= fgets($f);
}
fclose($f);
return $str;
}


function fpush($filename, $arr){
    $f=fopen($filename, "a");
    foreach ($arr as $str) {
        fwrite($f, NL . $str);   // NL == "\r\n"
    }
    fclose($f);
}


function fnl($filename){
    // add a new line "\r\n" in the file
    $f=fopen($filename, "a");
    fwrite($f, NL);  
    fclose($f);
}


function fclear($filename){
    // clear a file
    file_put_contents($filename, "");
}


function fempty($filename){
    // is the file empty or not?
    $f = fopen($filename,"r");
    fgetc($f);
    if (feof($f)) {
        return True;}
    else {
        return False;}
    fclose($f);
}

以上就介绍了PHP 文件读入到数组,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。