PHP从txt文件中读取数字

时间:2015-04-09 10:11:00

标签: php fopen

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

但我只得到一个号码,最后一个号码,我尝试了很多方法,但我现在无法自己解决,有人可以帮助我吗?

5 个答案:

答案 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);