2011-04-03 74 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