PHP 从 txt 文件中读取数字

PHP read numbers from a txt file

我在尝试从 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);

但是我只有一个号码,最后一个,我试了很多方法,但我暂时无法自己解决,谁能帮助我?

fscanf 从文件中读取一行,然后 fgets 读取第二行。

尝试注释掉 fscanf 行。

这应该适合你:

(这里我只是将您的文件读取为 csv 文件,其中 fgetcsv() 以 space 作为分隔符)

<?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 )
$result = array();
$fp = fopen("./test.txt", "r");
while (($lineData = fgetcsv($fp, 1000, " ")) !== FALSE) {
    $result = array_merge($result, $lineData);
}
fclose($fp)

如果文件只包含数字和换行符,您可以尝试一次全部阅读(当然如果文件不是很大):

$result = explode(" ", str_replace(array(" ", "\n", "\r"), " ", file_get_contents("./test.txt")));

如果您确实需要将它们转换为浮点数:

array_walk($result, 'floatval');
$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);