2014-09-12 1 views
0

데이터를 통해 첫 번째 루프에서 첫 번째 검색된 레코드를 건너 뛰는 foreach 루프가 있습니다. 내 테이블에 4 년 분량의 데이터가있어. 매년 색상이 있습니다php foreach 루프 첫 번째 레코드 건너 뛰기

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

때 나는 루프 그것을 통해, 상관없이 내가 선택하는 년의 첫 해의 색상 (, 데이터가 동적이기 때문에) 비어 있습니다. 두 번째 해에는 첫 해의 색이 있고 세 번째 해에는 두 번째 해의 색이 있습니다.

코드는 다음과 같습니다 : I 2011 년과 2012 년 나의 년 쿼리를 설정

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>'; 
} 

, 출력은 다음과 같습니다

<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

을 당신이 전에 $record을 참조하는 첫 번째 foreach 루프에서 내측 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>'; 
} 

을 그건 그렇고, 당신은 아마 PDO 또는 대신에 사용되지 않는 mysqlmysqli을 사용하지에 대한 의견을 많이 얻을 것이다. 나는 그것을 바꾸는 것을 검토 할 것을 제안한다. 또한 유사한 오류를 피하기 위해 여러 루프에서 변수 이름을 다시 사용하지 않거나 이름을 다시 사용하지 않는 것이 좋습니다.

+0

에서 그것을 얻을 필요하지만, 작동하지 않았다. 나는 mysql에 동의한다. –

0

아래의 두 번째 줄에는 $record이 있지만 첫 번째 줄에는 $records이 생성됩니다. YearColor$TransYear의 변수가 아닌 경우에 당신은 내가 $ 레코드 $ 기록을 교체 시도 $records[0]

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

감사! $ records [0]이 트릭을했습니다! 매우 감사. 독서를 할 시간이야. –