3 回答
TA贡献1789条经验 获得超10个赞
你能试试下面的方法吗?希望它可以帮助你。
<?php
# -----------------------------------------------------
# Read value from file
# -----------------------------------------------------
$i = 0 ;
$file = fopen("/usr/local/bin/UpsResult.txt","r"); //i open my file to read it
$dot = 0;
$result_arr = [];
while( !feof( $file ) ) {
$y = fgets($file);
$dot = strpos($y,':')+1;
$x = substr($y, $dot);
$result_arr[] = $x;
// $UPS_respond = array($i => $x);
// echo "inside of Loop => ".'$UPS_respond['.$i.'] :'.$UPS_respond[$i]."<br>";
$i++;
}
fclose( $file );
//echo "<pre>Ouside of Loop => ".$UPS_respond[$i]."<br>";
echo "<pre>Ouside of Loop => "; print_r( $result_arr );
?>
结果会是这样的:
Ouside of Loop => Array
(
[0] => 212.0
[1] => 212.0
[2] => 212.0
[3] => 000
[4] => 50.0
[5] => 13.7
[6] => 28.0
[7] => 00001001
)
TA贡献1824条经验 获得超6个赞
原答案:
您可以使用以下方法使事情变得更容易。使用file()和explode()PHP 函数读取文件内容并解析每一行的内容。
<?php
// Read file
$UPS_respond = file('UpsResult.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
// Output
foreach ($UPS_respond as $line) {
$a = explode(':', $line);
echo "Item info: ".$a[0]." : ".$a[1]."<br>";
};
?>
输出:
Item info: I/P voltage : 212.0
Item info: I/P fault voltage : 212.0
Item info: O/P voltage : 212.0
Item info: O/P current : 000
Item info: I/P frequency : 50.0
Item info: Battery voltage : 13.7
Item info: Temperature : 28.0
Item info: UPS Status : 00001001
更新:
如果您只想获取部分行,请使用下一种方法。脚本中出现错误的原因是您需要在$UPS_respond数组中添加一个$UPS_respond[] = ...;.
<?php
// Read file
$file = file('UpsResult.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
// Output
$UPS_respond = array();
foreach ($file as $line) {
$a = explode(':', $line);
$UPS_respond[] = $a[1];
};
var_dump($UPS_respond);
// ?>
TA贡献1877条经验 获得超6个赞
您必须$UPS_respond = []
在while
循环之前添加。你也必须改变
$UPS_respond = array($i => $x);
到
$UPS_respond[$i] = $x;
这样做的原因是,在每次迭代中,您都用新的数组替换数组。使用上面的代码,您会将值添加到数组中,而不是每次都创建一个新值。
更新:我看到了另一个问题。它echo
在最后。您拥有 中的所有值array
,但您只打印最后一个,因为$i
是最后一个数组的键。
你可以通过做检查
var_dump($UPS_respond);
如果你告诉我,你到底想如何使用这些值,我可以告诉你如何处理它。
- 3 回答
- 0 关注
- 142 浏览
添加回答
举报