Гость_Алексей
20.02.2013 - 11:11
Суть вопроса такова есть программа которая выводит информацию в файл
создаю скрипт для построения графиков из него, там все значения выводястя построчно и помимо того разделены Tab ом:
3 25.01.13 14:38:25 15,1 0,0 0,0 0,0
4 25.01.13 14:39:26 21,6 0,0 0,0 0,0
5 25.01.13 14:40:27 22,5 0,0 0,0 0,0
6 25.01.13 14:41:28 22,8 0,0 0,0 0,0
7 25.01.13 14:42:28 23,0 0,0 0,0 0,0
8 25.01.13 14:43:30 0,0 0,0 0,0 0,0
9 25.01.13 14:44:30 23,2 0,0 0,0 0,0
10 25.01.13 14:45:31 23,4 0,0 0,0 0,0
11 25.01.13 14:46:32 32,5 0,0 0,0 0,0
12 25.01.13 14:47:33 80,6 0,0 0,0 0,0
13 25.01.13 14:48:33 83,0 0,0 0,0 0,0
14 25.01.13 14:49:35 0,0 0,0 0,0 0,0
в каждой строке значения разделены tab ом
как мне разделить строку как , чтобы строить график по 4 столбцу ? ибо массив делит их по строкам например
<?
$file_array = file( "ITR130125_1.itd" );
$i=0;
while ( count($file_array) > $i ){
$i++;
echo "<b>Line $i:</b> ", $i,"содержание массива!!!",$file_array[$i], "<br>\n";}
?>
выводит
Line 4: 4содержание массива!!!3 25.01.13 14:38:25 15,1 0,0 0,0 0,0
Line 5: 5содержание массива!!!4 25.01.13 14:39:26 21,6 0,0 0,0 0,0
Line 6: 6содержание массива!!!5 25.01.13 14:40:27 22,5 0,0 0,0 0,0
Line 7: 7содержание массива!!!6 25.01.13 14:41:28 22,8 0,0 0,0 0,0
Line 8: 8содержание массива!!!7 25.01.13 14:42:28 23,0 0,0 0,0 0,0
Line 9: 9содержание массива!!!8 25.01.13 14:43:30 0,0 0,0 0,0 0,0
а мне надо:
Line 4: 4содержание массива!!!3 15,1
Line 5: 5содержание массива!!!4 21,6
Line 6: 6содержание массива!!!5 22,5
Line 7: 7содержание массива!!!6 22,8
Line 8: 8содержание массива!!!7 23,0
Line 9: 9содержание массива!!!8 0,0
$result = array();
foreach ( file('ITR130125_1.itd') as $v) {
$result[] = explode("\t", $v);
}
var_dump($result);
Гость_Алексей
20.02.2013 - 11:22
Спасибо за быструю помощь
Гость_Алексей
20.02.2013 - 12:01
<?
$result = array();
foreach ( file('ITR130125_1.itd') as $v) {
$result[] = explode("\t", $v);
}
$i=0;
while ( count($result) > $i ){
$i++;
echo "<b>Line $i:</b> ", "содержание массива:",$result($i),"<br>";}
?>
В чем проблема ?
Line 1: содержание массива:
Fatal error: Function name must be a string in U:\home\localhost\www\1\2.php on line 11
как поправить?
или я неправильно смотрю элемент массива?
$result($i) --> print_r($result[$i], 1)
Гость_Алексей
20.02.2013 - 13:07
Это двухмерный массив мы получили получается ?
разобрался точно 2х мерный массив спасибо
Цитата |
а мне надо: Line 4: 4содержание массива!!!3 15,1 |
$i=0;
while ( count($result) > $i ){
echo "<b>Line $i:</b> ", "содержание массива:",
preg_replace ('/^(\d+)\s{1,}.*:\d\d\s(\d+,\d).*$/', '$1 $2', $result[$i][0]), "<br>";
$i++;
}
Гость_Алексей
20.02.2013 - 13:57
Спасибо я реализовал так
<?php // content="text/plain; charset=utf-8"
$result = array();
foreach ( file('ITR130125_1.itd') as $v) {
$result[] = explode("\t", $v);
}
$i=0;
while ( (count($result)-1) > $i ){
$i++;
$tempiratura[$i]=$result[$i][3];
$wrema=$result[$i][2];
следующий этап строить график температуры и времени... строить собираюсь через jpgraph
php noober
28.02.2013 - 16:12
столкнулся со следующей проблемой :
программа которая снимает темпиратуру и сохраняет в тхт документ при переходе на новую дату создает новый тхт документ и график у меня в этот момет начинается с нуля ... посоветуйте как мне плавно перейти? не обязательно код а хотя бы агаритм действия
<?php // content="text/plain; charset=utf-8"
header('Refresh:30');
$date=date('ymd');
$name1='COM_2.2/Data1/ITR'.$date.'_1.itd';// документ из которого читаем темпиратуры
$result = array();
foreach ( file($name1) as $v) {
$result[] = explode("\t", $v);
}
$i=0;
while ( (count($result)) > $i ){
$i++;
if(floatval($result[$i][3]) == 0){if(floatval($result[$i-1][3]) == 0){$tempiratura[$i]=floatval($result[$i-2][3]);} else {$tempiratura[$i]=floatval($result[$i-1][3]);}} else{
$tempiratura[$i]=floatval($result[$i][3]);// сделана по тому что программа которая работает с термодатчиком иногда выдает ошибку и значение темпиратуры 0 что бы не портить график
$wrema[$i]=$result[$i][2];
}
}
If((count($tempiratura))>120){ //если колличество показаний темпиратуры больше 120 то показываем последние 120 показаний чтобы не загружать график
$i=120;
$s=count($tempiratura);
$d=count($tempiratura)-120;
While ($s>$d)
{
$s=$s-1;
$i=$i-1;
$tempiratura1[$i]=$tempiratura[$s];
}}
else{
$tempiratura1=$tempiratura;
} // если показаний меньше 120 то показываем то что есть
//получили в переменной темпиратура массив с темпиратурой а в переменной время массив с временем
php noober
1.03.2013 - 07:45
да забыл написать имя файла с показаниями темпиратуры генерируется так: ITRгод.месяц.число_1 файл сегодняшнего дня определяется так
$date=date('ymd');
$name1='COM_2.2/Data1/ITR'.$date.'_1.itd';// документ из которого читаем темпиратуры
тоесть вопрос стоит по большому в следующем: как определить вчерашнюю дату?
Цитата (php noober @ 1.03.2013 - 03:45) |
тоесть вопрос стоит по большому в следующем: как определить вчерашнюю дату? |
$dateTime = new DateTime();
$dateTime->modify('-1 day');
$date = $dateTime->format('ymd')
php noober
1.03.2013 - 10:57
<?php // content="text/plain; charset=utf-8"
header('Refresh:30');
$date=date('ymd');
$name1='COM_2.2/Data1/ITR'.$date.'_1.itd';
$result = array();
foreach ( file($name1) as $v) {
$result[] = explode("\t", $v);
}
$i=0;
while ( (count($result)) > $i ){
$i++;
if(floatval($result[$i][3]) == 0){if(floatval($result[$i-1][3]) == 0){$tempiratura[$i]=floatval($result[$i-2][3]);} else {$tempiratura[$i]=floatval($result[$i-1][3]);}} else{
$tempiratura[$i]=floatval($result[$i][3]);//темпиратура сегодняшнего дня
$wrema[$i]=$result[$i][2];
}
}
If((count($tempiratura))>120){ //если колличество показаний темпиратуры больше 120 то показываем последние 2часа
$i=120;
$s=count($tempiratura);
$d=count($tempiratura)-120;
While ($s>$d)
{
$s=$s-1;
$i=$i-1;
$tempiratura1[$i]=$tempiratura[$s];
}}
else{// если нет 120 значений
$date2=date('ymd',strtotime('-1 day')); //предидущий день
$name2='COM_2.2/Data1/ITR'.$date2.'_1.itd';
if (file_exists($name2)){ // если существует файл с вчерашним именем
$result2 = array();
foreach ( file($name2) as $v) { // прочитали файлы за вчерашний день
$result2[] = explode("\t", $v);
}
$i=0;
while ( (count($result)) > $i ){
$i++;
if(floatval($result2[$i][3]) == 0){if(floatval($result2[$i-1][3]) == 0){$tempiraturav[$i]=floatval($result2[$i-2][3]);} else {$tempiraturav[$i]=floatval($result2[$i-1][3]);}} else{
$tempiraturav[$i]=floatval($result2[$i][3]); //$tempiraturav темпиратура предидущего дня
$wremav[$i]=$resultv[$i][2]; //$wremav время предидущего дня
}
$i=120-count($tempiratura);
$s=count($tempiraturav);
$d=count($tempiraturav)-$i;
While ($s>$d)
{
$s=$s-1;
$i=$i-1;
$tempiratura1[$i]=$tempiraturav[$s];
}
$i=120-count($tempiratura);
$p=count($tempiratura1);
$k=120;
$j=0;
While ($k>$i)
{
$j=$j+1;
$i=$i+1;
$tempiratura1[$i]=$tempiraturav[$s];
}
else {
$tempiratura1=$tempiratura;
}
} // если нет то показываем то что есть
//получили в переменной темпиратура массив с темпиратурой а в переменной время массив с временем
в чем ошибка?
Parse error: syntax error, unexpected T_ELSE in U:\home\www.123.ru\www\index3.php on line 81
Игорь_Vasinsky
1.03.2013 - 11:05
<?php
header('Refresh:30');
$date=date('ymd');
$name1='COM_2.2/Data1/ITR'.$date.'_1.itd';
$result = array();
foreach ( file($name1) as $v) {
$result[] = explode("\t", $v);
}
$i=0;
while ( (count($result)) > $i ){
$i++;
if(floatval($result[$i][3]) == 0){if(floatval($result[$i-1][3]) == 0){$tempiratura[$i]=floatval($result[$i-2][3]);} else {$tempiratura[$i]=floatval($result[$i-1][3]);}} else{
$tempiratura[$i]=floatval($result[$i][3]);
$wrema[$i]=$result[$i][2];
}
}
If((count($tempiratura))>120){
$i=120;
$s=count($tempiratura);
$d=count($tempiratura)-120;
While ($s>$d)
{
$s=$s-1;
$i=$i-1;
$tempiratura1[$i]=$tempiratura[$s];
}}
else{
$date2=date('ymd',strtotime('-1 day'));
$name2='COM_2.2/Data1/ITR'.$date2.'_1.itd';
if (file_exists($name2)){
$result2 = array();
foreach ( file($name2) as $v) {
$result2[] = explode("\t", $v);
}
$i=0;
while ( (count($result)) > $i ){
$i++;
if(floatval($result2[$i][3]) == 0){if(floatval($result2[$i-1][3]) == 0){$tempiraturav[$i]=floatval($result2[$i-2][3]);} else {$tempiraturav[$i]=floatval($result2[$i-1][3]);}} else{
$tempiraturav[$i]=floatval($result2[$i][3]);
$wremav[$i]=$resultv[$i][2];
}
$i=120-count($tempiratura);
$s=count($tempiraturav);
$d=count($tempiraturav)-$i;
While ($s>$d)
{
$s=$s-1;
$i=$i-1;
$tempiratura1[$i]=$tempiraturav[$s];
}
$i=120-count($tempiratura);
$p=count($tempiratura1);
$k=120;
$j=0;
While ($k>$i)
{
$j=$j+1;
$i=$i+1;
$tempiratura1[$i]=$tempiraturav[$s];
}
else {
$tempiratura1=$tempiratura;
}
}
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker