2009-09-22 86 views
0

假設我有一個包含日期和季節的數組,每天有一個條目。我只想在季節值發生變化時纔打印陣列行。Array,如何僅顯示「更改值」

陣列看起來像:

2009-10-28 00:00:00 (good season) 

2009-10-29 00:00:00 (good season) 

2009-10-30 00:00:00 (good season) 

2009-10-31 00:00:00 (good season) 

2009-11-01 00:00:00 (good season) 

2009-11-02 00:00:00 (bad season) 

2009-11-03 00:00:00 (bad season) 

2009-11-04 00:00:00 (bad season) 

2009-11-05 00:00:00 (bad season) 

回答

3

遍歷,保持上賽季的戰績:

$lastSeason = ''; 

foreach ($array as $date => $season) 
{ 
    if ($season != $lastSeason) 
     echo "Season changed on " . $date; 

    $lastSeason = $season; 
} 
1

商店最後一次迭代的狀態,比較它的狀態當前。如果它們不同,打印的項目:

$last = null; 
foreach ($array as $val) { 
    if (preg_match('/^\d{4}-\d{2}\d{2} \d{2}:\d{2}:\d{2} \((good|bad) season\)$/', $val, $match)) { 
     if ($last != $match[1]) { 
      echo $val; 
     } 
     $last = $match[1]; 
    } 
} 
+0

爲什麼要使用正則表達式複雜的這樣一個簡單的問題嗎?至少, – knittl

+0

,它看起來很酷 – Roch

1

假設你的數組是數組的數組:

if(count($array) > 0) { 
    $prev = $array[0]['season']; 

    foreach ($array as $row) { 
    if ($row['season'] != $prev) echo $row['date']; 

    $prev = $row['season']; 
    } 
}