我在尝试从txt文件中读取foat数字时遇到了一些麻烦。 txt文件是这样的:
10.4 20.5 30.1 40.33 50.12
60.56
我需要将这些数字存储在数组中,这是我正在使用的php代码:
$result = array();
$fp = fopen("./test.txt", "r");
fscanf($fp, "%d\n", $count);
$numbers = explode(" ", trim(fgets($fp)));
foreach ($numbers as &$number)
{
$number = floatval($number);
array_push($result,$number);
echo $php_errormsg;
}
fclose($fp);
但我只得到一个号码,最后一个号码,我尝试了很多方法,但我现在无法自己解决,有人可以帮助我吗?
答案 0 :(得分:1)
$result = array();
$fp = fopen("./test.txt", "r");
while (($lineData = fgetcsv($fp, 1000, " ")) !== FALSE) {
$result = array_merge($result, $lineData);
}
fclose($fp)
答案 1 :(得分:0)
fscanf从文件中读取一行,然后fgets读取第二行。
尝试注释fscanf行。
答案 2 :(得分:0)
这应该适合你:
(这里我只是将您的文件作为带有fgetcsv()
的csv文件读取,并以空格作为分隔符)
<?php
$h = fopen("test.txt", "r");
if($h) {
while (($data = fgetcsv($h, 1000, " ")) !== FALSE) {
foreach($data as $num)
$numbers[] = $num;
}
fclose($h);
}
print_r($numbers);
?>
输出:
Array ( [0] => 10.4 [1] => 20.5 [2] => 30.1 [3] => 40.33 [4] => 50.12 [5] => 60.56 )
答案 3 :(得分:0)
如果文件只包含数字和换行符,您可以尝试一次阅读(如果它当然不是很大):
$result = explode(" ", str_replace(array(" ", "\n", "\r"), " ", file_get_contents("./test.txt")));
如果您确实需要将它们转换为浮点数:
array_walk($result, 'floatval');
答案 4 :(得分:0)
$tok = strtok(file_get_contents("./test.txt"),"\n\r\t ");
for($a=array();$tok!==false;$tok=strtok("\n\r\t ")) $a[] = floatval($tok);
var_dump($a);