php中的重置函数和关联数组?

php中的重置函数和关联数组?,php,arrays,associative-array,Php,Arrays,Associative Array,我正试图借助函数current()、next()和reset()在关联数组中循环。前两个函数对我来说非常有用,但当我想再次循环使用它并使用reset()函数时,它就不起作用了 代码如下: while ($availability_per_date = mysql_fetch_assoc($availability)) { //it won't go in to the loop below a second time while (current($room_types_ava

我正试图借助函数
current()
next()
reset()
在关联数组中循环。前两个函数对我来说非常有用,但当我想再次循环使用它并使用
reset()
函数时,它就不起作用了

代码如下:

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

第二次返回当前($room\u types\u available)是否可能返回一个强制转换为false的值


使用函数是解决问题的好方法,它可以避免false上的歧义。

首先,尝试使用内置函数,这些函数可以轻松地更好地处理代码,下面是一个示例:

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

如果你的应用程序出现任何错误,请发布它,我们将修复:)

不要抄袭别人的答案,但preinheimer是正确的

在循环的第一次迭代中,您将许多值设置为false(字符串“0”在PHP中为false)。While在随后的调用中检测到这些,然后提前终止(因为在本例中,current返回false)。您的两个选项是分别使用(如preinheimer所建议的)或foreach而不是while(如Khez所建议的)


就我个人而言,(正如我在上面的评论中所说的),我认为foreach更直观,因此实践更好,但这两种方法在功能上都不正确。

我希望这纯粹是学术性的,你没有使用
current()
next()
reset()
,因为你认为你必须这样做?我同意Nick的观点。在这里使用foreach更直观。实际上这不是学术性的。使用这些方法有问题吗?使用foreach更直观。。。PHP的设计或多或少都考虑到了这一点。至少,它删除了两行代码,使未来的程序员更容易立即理解。。。虽然我认为重置应该可以解决这个问题…试着调试你的程序,因为它没有问题。我个人认为$room\u types\u available是空的。在循环到$test=current($room\u types\u available)之前,很容易检查;谢谢你错过了关于foreach循环的教程,显然这是一个重要的教程:)现在就去尝试一下……效果非常好,让我有点为自己感到羞愧。。。非常感谢!我被困在那里三天了。说到艰苦的学习:)我喜欢foreach的简单性,但它确实复制了要迭代的数组。。。不知道没有这个网站我会怎么样!