PHP,将数组保存到文件中

时间:2015-04-08 09:48:28

标签: php arrays file

我有一个简单的点击计数器,我保存了访问者的IP和国家/地区,但在一些点击文件后我写的访问填充空行

结果如下:

<myip>|GR







<myip>|GR



<myip>|GR

<myip>|GR
<myip>|GR

这是代码:

<?php
    $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    $location = json_decode(file_get_contents("http://ipinfo.io/{$ip}/json"));

    $entries = file("hitcounter.txt");
    array_push($entries,$ip."|".$location->country);

    $newEntries=implode($entries,"\n");

    $fp = fopen("hitcounter.txt" ,"w");
    fputs($fp , $newEntries);
    fclose($fp);

    function echoVisits(){
        $entries = file("hitcounter.txt");
        echo count($entries);
    }
?>

那么为什么我最终得到一个空行的文件?

1 个答案:

答案 0 :(得分:3)

你只需要改变这个:

$newEntries=implode($entries,"\n");

$fp = fopen("hitcounter.txt" ,"w");
fputs($fp , $newEntries);
fclose($fp);

到此:

file_put_contents("hitcounter.txt", $entries);

因为如果你使用file()将文件读入数组,那么你已经在每个元素的末尾都有了新的行符号,所以如果你内爆它,你将为每个元素添加一个新的行符号。 / p>

你在新的整个行中也有新的行字符,你只需将它附加到你的array_push中就像这样:

array_push($entries, $ip."|". "GR" . PHP_EOL);
                                   //^^^^^^^

此外,如果您不在代码中的任何其他位置使用文件中的数据,您也可以添加新条目,这样您就可以看起来像这样:

$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
$location = json_decode(file_get_contents("http://ipinfo.io/{$ip}/json"));

file_put_contents("hitcounter.txt", $ip."|". $location->country . PHP_EOL, FILE_APPEND);

function echoVisits($file){
    return count(file($file));
}