我有一段代码如下:
while ( $conver = mysqli_fetch_assoc($converQ)) // for each conversation
{
$group_mark = array();
if ($conver['send_from'] == 1) // send from group
{
if (in_array($conver['sender_id'], $group_mark))
{
continue;
}
else
{
array_push($group_mark, $conver['sender_id']);
}
...
在while-loop
的开头,我必须检查对话是来自群组还是个人。如果它来自组,我应该检查id
是否已经出现。但是现在continue
无法停止在while-loop
中执行以下代码并开始下一个循环。我认为原因是它的外部函数是if-else
而不是直接while-loop
。你能告诉我如何编辑代码来做我想要的吗?提前谢谢!
编辑:
我试过这个:continue 2
但它不起作用。为什么呢?
感谢@ThinkingMedia,我知道现在的问题是什么。我把$group_mark
放在了错误的地方。遗憾。
答案 0 :(得分:1)
在这些您要停止检查其他行的情况下,您可以开发一个函数并在您需要的位置返回true:
function check()
{
while ( $conver = mysqli_fetch_assoc($converQ)) // for each conversation
{
$group_mark = array();
if ($conver['send_from'] == 1) // send from group
{
if (in_array($conver['sender_id'], $group_mark))
{
return true;
}
else
{
array_push($group_mark, $conver['sender_id']);
}
}
}
}
答案 1 :(得分:1)
你的代码是对的。但是继续不会跳过那些if/else
语句。
在php docs中,他们说已弃用:continue {var}
5.4.0删除了传入变量(例如$ num = 2; continue $ num;)作为数字参数的能力。
您可以按如下方式修改代码:
while ( $conver = mysqli_fetch_assoc($converQ)) // for each conversation
{
$group_mark = array();
if ($conver['send_from'] == 1) // send from group
{
if (!in_array($conver['sender_id'], $group_mark)) {
array_push($group_mark, $conver['sender_id']);
}
}
...
}
答案 2 :(得分:0)
发现了一些有趣的,好奇为什么你的$ group_mark = array();在while循环中。看起来这会被覆盖并且无法达到if条件,因为group_mark总是空数组。
尝试将此移至while循环之前。这应该解决并得到你需要的东西。