2013-06-25 49 views
0

我有一个问题,我试图从xml文件读出每天的最大温度值。我的XML文件看起来像:php xml每天读出最大值

<?xml version="1.0"?> 
<temperature> 
    <measure> 
     <date>2013-06-19 03:18</date> 
     <sensor1>25.38</sensor1> 
    </measure> 
    <measure> 
     <date>2013-06-19 06:18</date> 
     <sensor1>26.38</sensor1> 
    </measure> 
    <measure> 
     <date>2013-06-19 09:18</date> 
     <sensor1>30.31</sensor1> 
    </measure> 
    <measure> 
     <date>2013-06-20 03:18</date> 
     <sensor1>25.31</sensor1> 
    </measure> 
    <measure> 
     <date>2013-06-20 06:18</date> 
     <sensor1>23.34</sensor1> 
    </measure> 
    <measure> 
     <date>2013-06-21 07:18</date> 
     <sensor1>26.31</sensor1> 
    </measure> 
    <measure> 
     <date>2013-06-21 10:18</date> 
     <sensor1>25.31</sensor1> 
    </measure>  
</temperature> 

,我想作为输出是什么样的:

06/19 max 30.31 
06/20 max 25.31 
06/21 max 26.31 

作为即时通讯仍然在学习PHP的即时通讯卡。到目前为止,我已经生成的代码是:

<?php 
$xml = simplexml_load_file("test.xml"); 
$days = array(); 
$sens1Array = array(); 
foreach($xml as $temp){ 
    $days[] = $temp->date . "," . $temp->sensor1; 
} 
$days = array_unique($days); 
foreach($days as $day){     
    $day= explode(",", $day); 
    $time = date("m/d", strtotime($day[0])); 
    echo $time . " "; 
    echo "max " . $day[1]; 
    echo "<br>";   
} 
?> 

,输出:

06/19 max 25.38 
06/19 max 26.38 
06/19 max 30.31 
06/20 max 25.31 
06/20 max 23.34 
06/21 max 26.31 
06/21 max 25.31 

那么什么即时寻找一些代码,可以每天,只输出这一天的最高值进行比较。我搜查了很多,但我无法解决。

回答

0

我认为下一个代码是做你想做的。

$xml = simplexml_load_file("test.xml"); 


/* aggregation of sensor maximum day values over time */ 

$days = array(); 

foreach ($xml as $measure) 
{ 
    $time = date("m/d", strtotime($measure->date)); 
    $sensor = (float) $measure->sensor1; 

    if (isset($days[$time]) and $days[$time] >= $sensor) { 
     continue; 
    } 

    $days[$time] = $sensor;   
} 


/* output */ 

foreach ($days as $time => $sensor) 
{     
    echo $time, " max ", $sensor, "<br>\n"; 
} 
+0

谢谢!它确实是我想要的。现在我必须研究它,看看我能否学到一些东西。 :) – nanab