重置函数和关联数组在php中?
我试图在函数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);
}
首先,尝试使用内置的功能,可以方便地与你的代码更好的工作,这里有一个例子:
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;
}
}
如果它使你的应用程序的任何错误,它张贴,我们会解决:)
感谢您错过了关于foreach循环的教程,显然它是一个重要的:)现在去试试吧...... – user605505 2011-04-03 21:15:06
工作得如此之好让我对自己有点惭愧......非常感谢!我被困在那里三天了。谈论学习困难的方式:) – user605505 2011-04-03 21:23:58
总是乐于提供帮助。 – Khez 2011-04-03 21:25:29
难道电流($ room_types_available)的返回通返回第二次强制转换为false值?
使用each()函数是解决问题的好方法,它避免了错误模糊。
以及我不能想到任何其他的可能性......虽然我认为重置应该修复... – user605505 2011-04-03 20:57:48
尝试调试您的程序,因为它没有任何问题。个人认为$ room_types_available是空的。 – Cristina 2011-04-03 21:01:17
在$ test = current($ room_types_available)的循环之前,很容易检查; – preinheimer 2011-04-03 21:01:28
不要复制到别人的答案,但preinheimer是正确的。
在循环的第一次迭代中,您将多个值设置为false(PHP中的“0”字符串为false)。然后在随后的调用中检测这些数据,然后提前终止(因为在这种情况下,当前返回false)。你的两个选择是使用每个(如preinheimer所建议的)或foreach而不是while(如Khez所建议的)。
个人来说,(正如我在上面的注释中规定),我认为是的foreach远更直观,所以更好的做法,但无论是两个在功能上不正确。
为了简单起见,我喜欢foreach,但它确实复制了要迭代的数组。 – preinheimer 2011-04-03 21:20:53
foreach解决方案非常好,谢谢大家......不知道我会不用这个网站! – user605505 2011-04-03 21:28:48
我希望这是纯粹的学术,你不使用'current()','next()'和'reset()',因为你认为你**有**到? – Nick 2011-04-03 20:52:29
我同意尼克。这里使用foreach更直观。 – cwallenpoole 2011-04-03 20:55:39
实际上它不是学术使用这些方法是否存在问题? – user605505 2011-04-03 20:55:59