PHP-从文本文件末尾读取

PHP-从文本文件末尾读取,php,arrays,text,file-io,Php,Arrays,Text,File Io,我有一个文本文件,其中的值用逗号分隔 例如: 1299491735618,10,84,10,121.6,10,120.0,12994917389996,12, 13, 14, 15, and so on .. 现在,我只需要读取最后一组数据,即仅从12994917389996,12,13,14,15等处读取… 在这种情况下,我猜12994917389996大于130,其他值小于130。所以,我需要从12994917389996读到文件的末尾 希望你得到它 编辑1:不,它是一个动态文本文件,不断

我有一个文本文件,其中的值用逗号分隔

例如:

1299491735618,10,84,10,121.6,10,120.0,12994917389996,12, 13, 14, 15, and so on ..
现在,我只需要读取最后一组数据,即仅从
12994917389996,12,13,14,15等处读取…

在这种情况下,我猜
12994917389996
大于130,其他值小于130。所以,我需要从
12994917389996
读到文件的末尾

希望你得到它

编辑1:不,它是一个动态文本文件,不断更新,我每次只需要读取最后一组数据

编辑2:我的代码

<?php
$file = fopen('graph.txt', 'r') or die("can't open file");

if ($file) {
    while (!feof($file)) {
        $line = trim(fgets($file));
        if (strlen($line)) {
            $fields = explode(",", $line);
            $num = count($fields);
            for ($i = 0; $i < $num; $i++) {
                $keyval[$i] = $fields[$i];
                if ($i == 0) {
                    $keyval['x'][] = $fields[$i];
                    echo $keyval['x'][0];
                }
                else {
                    if ($i % 2 == 0) $keyval['y'][] = $fields[$i];
                    else $keyval['y1'][] = $fields[$i];
                }
            }
        }
    }
}

fclose($file);
?>  

对不起,我不确定我是否明白。。。你想从第一个大于130的数字中得到除第一个以外的所有数字吗?伙计,这很复杂:D

这个怎么样

$str = "1299491735618,10,84,10,121.6,10,120.0,12994917389996,12,13,14,15,16,17";

$arr = explode(',', $str);

$i = 1;
while ($i < count($arr) && floatval($arr[$i]) < 130)
  $i++;

print_r(array_slice($arr, $i));
希望这会有所帮助

$ echo '1299491735618,10,84,10,121.6,10,120.0,12994917389996,12, 13, 14, 15'  > file
$ php -a
php > $fp = fopen('/path/to/file', 'r');
php > fseek($fp, 38);
php > echo fgets($fp);
12994917389996,12, 13, 14, 15

如果没有,您能否更具体地说明文件中存储的数据结构?

您好,该文件正如我提到的……1299491735618、10、84、10121.6、10120.0(等等……),12994917389996、12、13、14、15等等。。我只需要读取最后一组数据!您的数据结构定义得好吗?我的意思是,你能说明你需要最后30个字节的文件,或者这个数字可能会有所不同吗?它将始终是xxxxxxxxx,XX,XX.X,XX,XX还是您的数据结构可能与此模式不同?不读取整个文件可以节省一些处理器时间和内存。在这种情况下,您只需打开它,查找最后30个字节,读取并关闭文件(我上面提供的方法)。您可以从结尾处获取文件大小减去30字节,然后查找这个数字(第二个fseek函数参数)。您是对的,但是文件是动态的,并且值一直附加到它。。。我只需要读取最后一组数据。。。我能辨别出的唯一结构是。。XXXXXXXXXX值肯定大于130,其他值小于130。。我需要从文件的末尾读取,直到大于130的值。。。所以,输出就像你提到的。。它需要b dynamicI已添加我的代码,请建议修改!谢谢重点是我需要从文件的末尾读。。。不是从一开始!
$ echo '1299491735618,10,84,10,121.6,10,120.0,12994917389996,12, 13, 14, 15'  > file
$ php -a
php > $fp = fopen('/path/to/file', 'r');
php > fseek($fp, 38);
php > echo fgets($fp);
12994917389996,12, 13, 14, 15