2014-09-12 339 views
0

我有一個foreach循環,它跳過第一個循環中的第一個檢索到的記錄,通過數據。我的桌子上有四年的數據。每一年都有一個顏色:PHP foreach循環跳過第一條記錄

2011 - #0000FF 2012 - #ff33ff 2013 - #6666CC 2014 - #FFFF00

當我依次通過它,第一年的顏色(無論我選擇哪一年,因爲數據是動態的)是空白的。第二年有第一年的顏色,第三年有第二年的顏色,依此類推。

代碼如下所示:

while ($record = mysql_fetch_object($result2)) { 
$set[$record->TransYear][] = $record; 
} 

function render($record) { 
$output .= "<point lat='{$record->TransLat}' lng='{$record->TransLong}' 
poly='{$record->TransYear}' />"; 
return $output; 
} 


foreach ($set as $TransYear => $records) { 
$YearColor = $record->YearColor; 
print "<line category='{$TransYear}' color='{$YearColor}' width='4'>"; 
print $YearColor; 
foreach ($records as $record) { 
print render($record); 
} 
print '</line>'; 
} 

當我把我一年查詢作爲2011年和2012年,輸出看起來是這樣的:

<line category="2011" color="" width="4"> 
<point lat="43.279" lng="-91.780" poly="2011"/> 
<point lat="43.274" lng="-91.785" poly="2011"/> 
<point lat="43.272" lng="-91.777" poly="2011"/> 
<point lat="43.273" lng="-91.784" poly="2011"/> 
<point lat="43.273" lng="-91.782" poly="2011"/> 
<point lat="43.277" lng="-91.780" poly="2011"/> 
<point lat="43.275" lng="-91.780" poly="2011"/> 
<point lat="43.274" lng="-91.786" poly="2011"/> 
<point lat="43.275" lng="-91.781" poly="2011"/> 
<point lat="43.275" lng="-91.783" poly="2011"/> 
<point lat="43.275" lng="-91.779" poly="2011"/> 
</line> 
<line category="2012" color="#0000FF" width="4"> 
<point lat="43.225" lng="-91.847" poly="2012"/> 
<point lat="43.116" lng="-91.900" poly="2012"/> 
<point lat="43.296" lng="-92.026" poly="2012"/> 
<point lat="43.004" lng="-91.972" poly="2012"/> 
<point lat="43.007" lng="-91.962" poly="2012"/> 
<point lat="43.011" lng="-91.930" poly="2012"/> 
<point lat="42.798" lng="-91.734" poly="2012"/> 
</line> 

回答

0

在你的第一個foreach循環之前你引用$record它在內部foreach中定義。你的意思是使用$records

while ($record = mysql_fetch_object($result2)) { 
    $set[$record->TransYear][] = $record; 
} 

function render($record) { 
    $output .= "<point lat='{$record->TransLat}' lng='{$record->TransLong}' 
    poly='{$record->TransYear}' />"; 
    return $output; 
} 

foreach ($set as $TransYear => $records) { 
    $YearColor = $records->YearColor; // Here, change to $records 
    print "<line category='{$TransYear}' color='{$YearColor}' width='4'>"; 
    print $YearColor; 

    foreach ($records as $record) { 
    print render($record); 
    } 
    print '</line>'; 
} 

順便說一句,你可能會得到很多的評論關於不使用PDOmysqli代替過時的mysql。我建議考慮改變這一點。此外,您可能會考慮不在各種循環中重新使用變量名稱或近似名稱以避免類似的錯誤。

+0

我試着用$記錄替換$記錄得到它,但沒有奏效。我同意mysql,但更多的是要學習。 – 2014-09-13 13:15:00

0

下面的第二行有$record,但第一行創建了$records。 如果YearColor不是$TransYear一個變量,那麼你需要從$records[0]

foreach ($set as $TransYear => $records) { 
    $YearColor = $record->YearColor; 
    print "<line category='{$TransYear}' color='{$YearColor}' width='4'>"; 
+0

謝謝! $記錄[0]做到了!非常感激。有時間做一些閱讀。 – 2014-09-13 13:16:20