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