我有一个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.'°C<br>';
// ...
任何人都可以教我如何以php专家的方式进行此操作吗? 提前致谢!
答案 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的内容。
因此,如果将“更新日期”设置为键,则会得到更好的输出。