如何在PHP7中从嵌套的include文件中打破while循环?
我有一个while循环,当它循环遍历Mysql记录时,它包含几个复杂的函数。一个更简单的任务是检查变量$city是否有一个ñ符号,如果$city包含一个ñ符号,则需要跳过MySql记录,但对于其余的MySql记录,循环需要继续 在过去,我对此使用了“break;”,但我收到了以下错误: PHP致命错误:“中断”不在“循环”或“切换”上下文中 我已经读到我应该使用“return false;”,但是这似乎也不起作用 非常感谢您的帮助 test.php如何在PHP7中从嵌套的include文件中打破while循环?,php,mysql,Php,Mysql,我有一个while循环,当它循环遍历Mysql记录时,它包含几个复杂的函数。一个更简单的任务是检查变量$city是否有一个ñ符号,如果$city包含一个ñ符号,则需要跳过MySql记录,但对于其余的MySql记录,循环需要继续 在过去,我对此使用了“break;”,但我收到了以下错误: PHP致命错误:“中断”不在“循环”或“切换”上下文中 我已经读到我应该使用“return false;”,但是这似乎也不起作用 非常感谢您的帮助 test.php <?PHP $query = "SEL
<?PHP
$query = "SELECT * FROM Cities limit 5";
$result = mysqli_query($con, $query);
while($row = mysqli_fetch_assoc($result))
{
$city = $row['City'];
$city = "ñ"; // I hardcoded for testing
require "test_function.php";
echo "I should not see this if there is a ñ within $city \n\n";
}
?>
test_function.php
<?PHP
if( strpos( $city, "ñ" ) !== false) {
echo "City $city contains a ñ. Skipping...\n\n";
break;
}
?>
<?PHP
if( strpos( $city, "ñ" ) !== false) {
echo "City $city contains a ñ. Skipping...\n\n";
$skip_city = true;
} else {
$skip_city = false;
}
?>
为什么要在循环中包含其他php文件?在循环中应用条件,如果条件匹配,它将跳出循环
<?PHP
$query = "SELECT * FROM Cities limit 5";
$result = mysqli_query($con, $query);
while($row = mysqli_fetch_assoc($result))
{
$city = $row['City'];
if( strpos( $city, "ñ" ) !== false) {
echo "City $city contains a ñ. Skipping...\n\n";
break;
}
echo "I should not see this if there is a ñ within $city \n\n";
}
?>
如果找到特殊字符,这将中断迭代
$query = "SELECT * FROM Cities limit 5";
$result = mysqli_query($con, $query);
$isCharFound = false;
while(($row = mysqli_fetch_assoc($result)) && ($isCharFound === false))
{
$city = $row['City'];
if( strpos( $city, "ñ" ) !== false) {
echo "City $city contains a ñ. Skipping...\n\n";
$isCharFound = true;
continue;
}
echo "I should not see this if there is a ñ within $city \n\n";
}
如果只想跳过具有特殊字符的记录
$query = "SELECT * FROM Cities limit 5";
$result = mysqli_query($con, $query);
while($row = mysqli_fetch_assoc($result))
{
$city = $row['City'];
if( strpos( $city, "ñ" ) !== false) {
echo "City $city contains a ñ. Skipping...\n\n";
continue;
}
echo "I should not see this if there is a ñ within $city \n\n";
}
如果您只想跳过一个城市,则应使用
继续
,而不是中断
<代码>继续转到下一个循环迭代,中断
完全结束循环
但是,这些语句必须位于循环体内部,不能位于它调用的函数或包含文件中
您可以做的是将include文件设置为一个变量,然后检查它
test_function.php
<?PHP
if( strpos( $city, "ñ" ) !== false) {
echo "City $city contains a ñ. Skipping...\n\n";
break;
}
?>
<?PHP
if( strpos( $city, "ñ" ) !== false) {
echo "City $city contains a ñ. Skipping...\n\n";
$skip_city = true;
} else {
$skip_city = false;
}
?>
php您是否需要该逻辑部分(
if(strpos($city,“ñ”)…
)在你的项目中的任何其他地方?你不能从IF中断。你只能从FOR.PHP7 change中断。我认为continue
可以做到这一点,但我不确定我是否同意@Tschitsch,好像第一个$city
包含一个ñ,break
将阻止后面所有的城市被关闭checked@HoldOffHunger他想做生意从而不是,这是允许的。如果
,你永远不能从中断,这不是一个新的变化。在我的真实脚本中,这个循环上面还有其他条件,test_function.php根据这些条件并不总是相同的。我以上面硬编码的test_function.php为例。通常情况下,是这样的“需要$some_函数";基本上,有时añ是可以的,但有时它并不取决于这个示例循环上面的条件。你可以在if语句中使用return
,但我想知道为什么他会在while循环中使用require
,什么会触发缓慢的随机磁盘i/O。在这种情况下,速度不是问题。它不是前端web脚本。它是这是一个用于后端图形渲染服务器进程的脚本。与我的渲染时间相比,需要文件的任何速度损失都是最小的。是的!这非常有效。谢谢您的帮助。@RaymondNijland在第一次包含之后,文件将已经在内存中,因此它不会每次都使用磁盘I/O。
<?PHP
$query = "SELECT * FROM Cities limit 5";
$result = mysqli_query($con, $query);
while($row = mysqli_fetch_assoc($result))
{
$city = $row['City'];
$city = "ñ"; // I hardcoded for testing
require "test_function.php";
echo "I should not see this if there is a ñ within $city \n\n";
}
?>