在txt文件中检索数据以使用它的php脚本

时间:2019-02-03 12:40:32

标签: php

我有一个txt文件('realtime.txt'),其中包含来自气象站的数据。这些值用空格隔开,看起来像这样:

02/02/19 11:50:10 11.1 60 3.6 23.6 19.4 338 0.0 1.5 1021.4 NNW +0.3 -1.4 ... 

我想检索这些值中的每个值并将其分配给一个变量,以便在需要时在php脚本中回显。使用相同的顺序,这些变量将是这样的:

$udate $utime $temp $hum $dew $wspeed $wlatest $bearing $rrate $rfall $press $currentwdir $ptrend $ttrend ... 

凭借我的初学者的php知识,我设法用一个非常奇怪的解决方案来做到这一点,我相信它将使任何php专家都笑了,但是...如果...的话,它是有效的:-) 如果字符数没有变化! 例如,如果温度从11.9ºC变为9.5ºC,一切都会搞砸了,因为计数时少了一个字符!

<?php 

// starting from caracter n read following i bytes
$udate = file_get_contents('realtime.txt', FALSE, NULL, 0, 8); 
$utime = file_get_contents('realtime.txt', FALSE, NULL, 9, 8); 
$temp = file_get_contents('realtime.txt', FALSE, NULL, 18, 4); 

// ...

echo 'updated @: '.$udate.' '.$utime.'<br>'; 
echo 'temperature is: '.$temp.'&deg;C<br>'; 

// ... 

任何人都可以教我如何以php专家的方式进行此操作吗? 提前致谢!

1 个答案:

答案 0 :(得分:3)

通过外观,您可以在空间上爆炸并使用list()将数组设置为每个变量。

list($udate, $utime, $temp, $hum, $dew, $wspeed, $wlatest, $bearing, $rrate, $rfall, $press, $currentwdir, $ptrend, $ttrend) = explode(" ", file_get_contents('realtime.txt'));

列表中参数的顺序应与文件中值的顺序相匹配。


另一种方法是将数组保留为数组,但make是关联的。

$keys = ['udate', 'utime', 'temp', 'hum', 'dew', 'wspeed', 'wlatest', 'bearing', 'rrate', 'rfall', 'press', 'currentwdir', 'ptrend', 'ttrend'];
$arr = array_combine($keys, explode(" ", file_get_contents('realtime.txt')));

echo $arr['udate']; //02/02/19

这意味着您可以遍历所有值并使用一行代码输出所有值。

foreach($arr as $key => $val){
    echo $key . " is " . $val;
}
// udate is 02/02/19
// utime is 11:50:10
// temp is 11.1
// And so on

您将看到在$ keys数组中设置为name的内容。
因此,如果将“更新日期”设置为键,则会得到更好的输出。