PHP - чтение из конца текстового файла - PullRequest
3 голосов
/ 18 апреля 2011

У меня есть текстовый файл со значениями, разделенными запятой.

Пример:

1299491735618,10,84,10,121.6,10,120.0,12994917389996,12, 13, 14, 15, and so on ..

Теперь мне нужно прочитать только последний «набор» данных, то есть только из 12994917389996,12, 13, 14, 15, and so on ...

В этом случае, я думаю, 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);
?>  

ЗДЕСЬ, я использую $ keyval [x] [] для хранения гигантских значений xxxxxxxxxxxxx и keyval [y] [] и keyval [y1] [] для хранения альтернативных значений ПОСЛЕ этого значения GIANT (xxxxxxxxxxxxx) .... Это надо все уточнить!

Ответы [ 2 ]

1 голос
/ 18 апреля 2011

Извините, я не уверен, что понял ... Вы хотите получить все числа с первого числа больше 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));

Выход:

Array
(
    [0] => 12994917389996
    [1] => 12
    [2] => 13
    [3] => 14
    [4] => 15
    [5] => 16
    [6] => 17
)
0 голосов
/ 18 апреля 2011

Надеюсь, это поможет.

$ 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

Если нет, то не могли бы вы более подробно рассказать о структуре данных, хранящихся в файле?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...