PHP中当内层do-while循环条件满足时,如何跳转到外层do-while循环?
处理PHP嵌套do-while循环的内层跳转需求
嘿,我来帮你解决这个嵌套循环跳转的问题。在PHP里,要实现内层do-while满足条件时直接跳到外层循环继续执行,最直接的方式就是给外层循环加个标签,配合continue语句来实现跳转。
下面是适配你代码的具体实现:
// 给外层do-while定义一个标签,名字可以自定义,比如outer_loop outer_loop: do { $sqlSeltime = "SELECT * FROM tbltime WHERE subtype = '$subtype' AND units = '$subunits' AND classtype = 'Lec' AND (time_value = '60' OR time_value = '90') ORDER BY RAND() LIMIT 1"; $sqlStoreTime = mysqli_query($connect, $sqlSeltime); $rowTime = mysqli_fetch_array($sqlStoreTime); $time_day = $rowTime["time_day"]; $day_avail = $rowTime["day_avail"]; $starting = $rowTime["start_time"]; $ending = $rowTime["end_time"]; $sqlSelRoom = "SELECT * FROM tblroom WHERE room_type = ..."; // 内层do-while循环 do { // 这里写你的内层循环逻辑 // 假设这是你需要判断的条件:当满足时跳转到外层循环的下一次迭代 if ($yourInnerCondition) { // 替换成你实际的判断条件 // 使用continue + 外层标签,直接进入外层循环的下一次循环 continue outer_loop; } // 内层循环的其他逻辑,只有当条件不满足时才会执行到这里 } while ($yourInnerLoopCondition); // 内层循环的终止条件 // 外层循环中,内层循环正常结束后才会执行的逻辑 } while ($yourOuterLoopCondition); // 外层循环的终止条件
关键说明:
- 标签的使用:给外层循环定义标签(比如
outer_loop:)时,标签名后面必须跟冒号,且要放在循环语句的前面。 - continue的作用:
continue outer_loop;会直接跳过外层循环当前迭代中剩余的所有代码(包括内层循环未执行完的部分),直接进入外层do-while的下一次循环判断,完全符合你“跳转到外层循环继续执行”的需求。
额外的安全提醒:
你的代码里直接把变量拼进SQL语句,这存在严重的SQL注入风险!建议改用mysqli的预处理语句来避免这个问题,示例如下:
// 预处理查询,用占位符代替变量 $sqlSeltime = "SELECT * FROM tbltime WHERE subtype = ? AND units = ? AND classtype = 'Lec' AND (time_value = '60' OR time_value = '90') ORDER BY RAND() LIMIT 1"; $stmt = mysqli_prepare($connect, $sqlSeltime); // 绑定参数,"ss"表示两个字符串类型的参数 mysqli_stmt_bind_param($stmt, "ss", $subtype, $subunits); mysqli_stmt_execute($stmt); // 获取结果集 $sqlStoreTime = mysqli_stmt_get_result($stmt); $rowTime = mysqli_fetch_array($sqlStoreTime);
内容的提问来源于stack exchange,提问作者Luke Castronuevo
相关产品推荐
相关产品推荐

