- 1. Не читает каждый файл в директории
2. Учитывает конец строки в файле
Код: Выделить всё
<?php
// набор данных который нужно прочесть:
//2,26,00,2013-10-01 06:47:20
$dataPath = "E:\Temp\USB_PC_thermometer"; // Директория с данными
$separator = ","; // Разделитель данных в файле
$file = ""; // имя файла
// бежим по директории
if ($handle = opendir($dataPath))
{
// Читаем файлы
while (false !== ($entry = readdir($handle)))
{
// путь к файлу
$filePath = $dataPath . "/" . $entry;
// если файл есть и является обычным файлом а не директорией то запоминаем его имя
if (file_exists($filePath) && is_file($filePath))
{
$file = $filePath;
}
}
closedir($handle);
}
//если имя файла не пустое
if (isset($file))
{
// читаем файл в массив
$data = file($file);
// обходим массив
foreach ($data as $val)
{
// если строка не пустая до получаем температуру
if (trim($val) != '')
{
// разбиваем строку на переменные с данными
list($DataNumber, $TempInteger, $TempRatio, $TempDate) = explode($separator, $val);
// склеиваем целую и дробную часть температуры
$Temp = $TempInteger . "." . $TempRatio;
}
}
}
// температура
echo $Temp;
?>
Исключает чтение каждой строки в массиве и определения пустой строки.
Код: Выделить всё
<?php
// набор данных который нужно прочесть:
//2,26,00,2013-10-01 06:47:20
$dataPath = "E:\Temp\USB_PC_thermometer"; // Директория с данными
$separator = ","; // Разделитель данных в файле
$file = ""; // имя файла
// бежим по директории
if ($handle = opendir($dataPath))
{
// Читаем файлы
while (false !== ($entry = readdir($handle)))
{
// путь к файлу
$filePath = $dataPath . "/" . $entry;
// если файл есть и является обычным файлом а не директорией то запоминаем его имя
if (file_exists($filePath) && is_file($filePath))
{
$file = $filePath;
}
}
closedir($handle);
}
//если имя файла не пустое
if (isset($file))
{
// читаем файл в массив игнорируя пустые строки
$data = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
// последняя строка в массиве
$lastLine = end($data);
// разбиваем строку на переменные с данными
list($DataNumber, $TempInteger, $TempRatio, $TempDate) = explode($separator, $lastLine);
// склеиваем целую и дробную часть температуры
$Temp = $TempInteger . "." . $TempRatio;
}
// темпаратура
echo $Temp;
?>