【发布时间】:2011-04-25 20:14:38
【问题描述】:
我在 php 中有如下代码:
while($r = mysql_fetch_array($q))
{
// Do some stuff
}
其中 $q 是检索一组组成员的查询。但是,某些组的成员保存在 memcached 中,并且该 memcached 值作为 $mem_entry 存储在数组中。为此,我通常会执行以下操作
foreach($mem_entry as $k => $r)
{
// Do some stuff
}
这就是问题所在。我不想让两个相同的代码块(//do some stuff 部分)嵌套在两个不同的循环中,因为在一种情况下我必须使用 mysql 作为循环,而另一个使用 memcached。有没有办法用while或foreach切换开始循环?换句话说,如果 $mem_entry 有一个非空值,则循环的第一行将是 foreach($mem_entry as $k => $r),或者如果它为空,则循环的第一行将是 while( $r = mysql_fetch_array($q))
编辑
好吧,在我写完这篇文章几秒钟后,我最终得出了解决方案。图我会把这个留给其他可能遇到这个问题的人。我首先将 $members 的值设置为 memcached 值。如果为空,我运行 mysql 查询并使用 while 循环将所有记录传输到名为 $members 的数组中。然后我使用 foreach($members as as $k => $r) 启动循环。基本上,我每次都使用 foreach 循环,但是 $members 的值根据它的值是否存在于 memcached 中而设置不同。
【问题讨论】:
标签: php mysql loops for-loop while-loop