2011-04-03 77 views
1

我試圖在函數current(),next()reset()的幫助下通過關聯數組進行循環。前兩個函數對我很好,但是當我想再次循環並使用reset()函數時,它不起作用。重置函數和關聯數組在php中?

下面的代碼:

while ($availability_per_date = mysql_fetch_assoc($availability)) { 

    //it won't go in to the loop below a second time 
    while (current($room_types_available)) { 

     $key= key($room_types_available); 

     if ($availability_per_date["{$key}"] == 0) {     
      $room_types_available["{$key}"] = 0; 
     } 
     echo $key; 

     next($room_types_available); 
    } 
    reset($room_types_available); 
} 
+1

我希望這是純粹的學術,你不使用'current()','next()'和'reset()',因爲你認爲你**有**到? – Nick 2011-04-03 20:52:29

+0

我同意尼克。這裏使用foreach更直觀。 – cwallenpoole 2011-04-03 20:55:39

+0

實際上它不是學術使用這些方法是否存在問題? – user605505 2011-04-03 20:55:59

回答

1

首先,嘗試使用內置的功能,可以方便地與你的代碼更好的工作,這裏有一個例子:

while ($availability_per_date = mysql_fetch_assoc($availability)) { 
    //it won't go in to the loop below a second time 
    foreach($room_types_available as $key=>$value){ 
     if ($availability_per_date["{$key}"] == 0) {     
      $room_types_available["{$key}"] = 0; 
     } 
     echo $key; 
    } 
} 

如果它使你的應用程序的任何錯誤,它張貼,我們會解決:)

+0

感謝您錯過了關於foreach循環的教程,顯然它是一個重要的:)現在去試試吧...... – user605505 2011-04-03 21:15:06

+0

工作得如此之好讓我對自己有點慚愧......非常感謝!我被困在那裏三天了。談論學習困難的方式:) – user605505 2011-04-03 21:23:58

+0

總是樂於提供幫助。 – Khez 2011-04-03 21:25:29

1

難道電流($ room_types_available)的返回通返回第二次強制轉換爲false值?

使用each()函數是解決問題的好方法,它避免了錯誤模糊。

+0

以及我不能想到任何其他的可能性......雖然我認爲重置應該修復... – user605505 2011-04-03 20:57:48

+0

嘗試調試您的程序,因爲它沒有任何問題。個人認爲$ room_types_available是空的。 – Cristina 2011-04-03 21:01:17

+0

在$ test = current($ room_types_available)的循環之前,很容易檢查; – preinheimer 2011-04-03 21:01:28

0

不要複製到別人的答案,但preinheimer是正確的。

在循環的第一次迭代中,您將多個值設置爲false(PHP中的「0」字符串爲false)。然後在隨後的調用中檢測這些數據,然後提前終止(因爲在這種情況下,當前返回false)。你的兩個選擇是使用每個(如preinheimer所建議的)或foreach而不是while(如Khez所建議的)。

個人來說,(正如我在上面的註釋中規定),我認爲是的foreach遠直觀,所以更好的做法,但無論是兩個在功能上不正確。

+0

爲了簡單起見,我喜歡foreach,但它確實複製了要迭代的數組。 – preinheimer 2011-04-03 21:20:53

+0

foreach解決方案非常好,謝謝大家......不知道我會不用這個網站! – user605505 2011-04-03 21:28:48