2013-06-25 98 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