2013-03-14 58 views
4

我有一個array與圖像和每個人的日期。我正在通過數組explode檢索日期。我想取這個日期值並將它與之前圖像的以前的日期值進行比較。我的目標是將這些日期顯示爲與每個不同日期對應的圖像集的標題。PHP比較當前數組值與以前的值

這裏是我的代碼,我一直在亂搞,試圖使這項工作(對不起,我所有的斜槓):

$p = 0; 
$a = -1; 
echo "<table>"; 
echo "<tr>"; 
foreach (array_combine($images,$locs) as $image => $loc) 
{ 
    $p++; 
    $a++; 
    $datesort = explode('>',$image); 
    echo "<style>"; 
    echo "input[label=t" . $p . "] {"; 
    echo "display: none;"; 
    echo "}"; 
    echo "input[label=t" . $p . "] + label {"; 
    echo "border: 5px solid #FFFFFF;"; 
    $image = "background: url('http://blah.com/" . $loctb[$p] . "');"; 
    echo $image; 
    echo "height: 61px;"; 
    echo "width: 92px;"; 
    echo "display: inline-block;"; 
    echo "padding: 0 0 0 0px;"; 
    echo "}"; 
    echo "input[label=t" . $p . "]:checked + label {"; 
    echo "border: 5px solid #FF9900;"; 
    echo "background: url('http://blah.com/" . $loctb[$p] . "');"; 
    echo "height: 61px;"; 
    echo "width: 92px;"; 
    echo "display: inline-block;"; 
    echo "padding: 0 0 0 0px;"; 
    echo "}"; 
    echo "</style>"; 
    $lastdate = array(""); 
    $lastdate[$a] = $datesort[1]; 
    echo "<td>"; 
    if ($lastdate[$a] <> $datesort[1]){ 
    echo "<h2>"; 
    echo $datesort[1]; 
    echo "</h2>"; 
    } 
    echo "<input type=\"checkbox\" label=\"t" . $p . "\" id=\"t" . $p . "\" name =\"boxes[]\" value=\"<img src=http://blah.com/" . $loc . "\" />"; 
    echo "<label for=\"t" . $p . "\"></label>"; 
    echo "</div>"; 
    echo "</td>"; 
    if ($p % 2 == 0) 
    { 
    echo "</tr>"; 
    } 
} 
echo "</table>"; 

我一直在試圖爲當前的日期值存儲到另一個array變量然後通過我的foreach循環將其與新值進行比較,但我做錯了: -/...

我很感謝您可以提供任何幫助。由於

+0

所以基本上,你是按日期分組的圖像? – 2013-03-14 19:35:39

+0

是的,你是對的。 – reubenCanowski 2013-03-14 19:36:36

+0

您可能想看看heredoc語法。這會給你更清潔的代碼。 http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc – 2013-03-14 20:39:16

回答

2

這裏是一個快速和骯髒的方式,但你要它調整到您的需要(我有這個問題,但它是更糟,因爲我還處於空白日期填寫之間):

$previous_dates = array(); 

foreach (array_combine($images,$locs) as $image => $loc) { 

    $datesort = explode('>',$image); 

    if (end($previous_dates) <> $datesort[1]) { 
     echo "<h2>"; 
     echo $datesort[1]; 
     echo "</h2>"; 
    } 
     // ... more stuff ...// 

    $previous_dates[] = $datesort[1]; 
} 

真的,我會重新考慮你在循環中爆炸的方法,但是首先要看的是,如果這會讓你得到你需要的位置。

+0

太棒了!你最近編輯的代碼做了訣竅。感謝幫助。謝謝你,安東尼。 – reubenCanowski 2013-03-14 20:03:38

+1

對,對不起。這是我從內存中編寫代碼所得到的結果。我認爲你遇到的最大困境是簡單地在循環內設置'lastdate = array(「」);'而不是提前。我已經做了一百萬次,只是爲了避免在我的非循環區域中出現循環變量。 – Anthony 2013-03-15 02:00:45

相關問題