[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: помощь с разделением строки
Страницы: 1, 2
Гость_Алексей
Суть вопроса такова есть программа которая выводит информацию в файл
создаю скрипт для построения графиков из него, там все значения выводястя построчно и помимо того разделены 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
kaww
$result = array();
foreach ( file('ITR130125_1.itd') as $v) {

$result[] = explode("\t", $v);
}
var_dump($result);
Гость_Алексей
Спасибо за быструю помощь
Гость_Алексей
<?
$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

как поправить?
или я неправильно смотрю элемент массива?
kaww
$result($i) --> print_r($result[$i], 1)
Гость_Алексей
Это двухмерный массив мы получили получается ?
Guest
разобрался точно 2х мерный массив спасибо
OleKh
Цитата
а мне надо:
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++;
}
Гость_Алексей
Спасибо я реализовал так

<?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
столкнулся со следующей проблемой :
программа которая снимает темпиратуру и сохраняет в тхт документ при переходе на новую дату создает новый тхт документ и график у меня в этот момет начинается с нуля ... посоветуйте как мне плавно перейти? не обязательно код а хотя бы агаритм действия
<?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
up
php noober
да забыл написать имя файла с показаниями темпиратуры генерируется так: ITRгод.месяц.число_1 файл сегодняшнего дня определяется так


$date=date('ymd');
$name1='COM_2.2/Data1/ITR'.$date.'_1.itd';// документ из которого читаем темпиратуры

тоесть вопрос стоит по большому в следующем: как определить вчерашнюю дату?
kaww
Цитата (php noober @ 1.03.2013 - 03:45)
тоесть вопрос стоит по большому в следующем: как определить вчерашнюю дату?


$dateTime = new DateTime();
$dateTime->modify('-1 day');
$date = $dateTime->format('ymd')
php noober
<?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

<?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;
}
}
// если нет то показываем то что есть

//получили в переменной темпиратура массив с темпиратурой а в переменной время массив с временем


_____________
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
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.