PHP: читаем числа из текстового файла в массив
Решение небольшой сложности, возникшей у народа при форматном чтении данных из файла на PHP.
В PHP, в отличие от C++, каждый вызов fscanf
читает одну строку из файла, таким образом, функция не работает аналогично одноимённой функции из C++ и не применима, например, к задаче чтения из файла произвольного количества числовых значений, расположенных в произвольных строках файла.
Ниже приведен пример открытия файла функцией fopen
с последующим чтением данных (целых или вещественных чисел) в массив $a
. Вызов die
, используемый в сочетании с fopen
, обеспечивает вывод сообщения об ошибке в том случае, если открыть файл не удастся.
<?php $file = 'data.txt'; $f = fopen($file, "r") or die("File $file does not exist!"); $a = Array (); while (($data = fgets($f))!==false) { $a0 = explode (" ",$data); foreach ($a0 as $item) if (is_numeric(trim($item))) $a[] = $item; } fclose ($f); foreach ($a as $item) echo $item.' '; ?>
Числа в файле data.txt
, находящемся в текущей папке скрипта, могут располагаться произвольно, например, следующим образом:
1 2 3.5 4 5.5 6 3
Пустые строки и нечисловые значения будут проигнорированы скриптом.
Обратите внимание на синтаксис записи условия, определяющего, достигнут ли конец файла, а также на необходимость удаления из прочитанных элементов файла $item
лишних разделителей функцией trim
, в противном случае, например, могут быть не прочитаны числа, завершающие строку файла.
08.05.2015, 10:52 [10930 просмотров]