2011-08-29 24 views
0

我有以下代碼:奇怪的行爲在foreach語句(額外環路)

$result = mysql_query("SELECT * FROM events",$db); 
$rowcheck = mysql_num_rows($result); 
    $allevents = array(); 
    echo "<br>Display events: ($rowcheck)"; 
    $i = '0'; 
while ($row_user = mysql_fetch_assoc($result)){ 
    $allevents[] = $row_user; 

    foreach ($allevents as $val) { 
     $eventID = $val['event_ID']; 

     echo "<br>$eventID"; 

     echo "End foreach."; 
    } // end foreach events as val 


    echo "End While."; 
} // end while 
print_r($allevents); 

,並得到以下的輸出:

Display events: (3) 
ID 1 End foreach.End While. 
ID 1 End foreach. 
ID 2 End foreach.End While. 
ID 1 End foreach. 
ID 2 End foreach. 
ID 3 End foreach.End While. 
Array ( 
[0] => Array ( 
    [event_ID] => 1 
    [eventtype] => 1 
    [eventlocation] => 1 
    [eventhostfamily] => 23 
    [eventturn] => 459 
    [char1] => 9 
    [char2] => 19 
) 
[1] => Array ( 
    [event_ID] => 2 
    [eventtype] => 4 
    [eventlocation] => 1 
    [eventhostfamily] => 29 
    [eventturn] => 461 
    [char1] => 208 
    [char2] => 0 
) 
[2] => Array ( 
    [event_ID] => 3 
    [eventtype] => 4 
    [eventlocation] => 1 
    [eventhostfamily] => 28 
    [eventturn] => 462 
    [char1] => 1 
    [char2] => 0 
) 
) 

出於某種原因,我無法捉摸,它給我一些奇怪的循環返回第一行,然後是前兩行,然後是前三行。

我在做什麼錯?

+0

您的目標是什麼? – Quasdunk

回答

2

您正在將每行從mysql追加到您的數組,然後輸出整個數組。將foreach循環移出您的時間:

while ($row_user = mysql_fetch_assoc($result)){ 
    $allevents[] = $row_user; 
    echo "End While."; 
} // end while 

foreach ($allevents as $val) { 
    $eventID = $val['event_ID']; 

    echo "<br>$eventID"; 

    echo "End foreach."; 
} // end foreach events as val 
+0

* headsmack *哇。謝謝。 – jeremy