例如,我有以下脚本。
在这种情况下,我想得到X1和Y1的值但是exit()不允许我这么做
请帮忙提前感谢特别感谢Mark Setchell:P(如果他看到这个)
图像链接
$im = imagecreatefromjpeg("omr.jpg");
for($x=0;$x<100;$x++) {
for($y=0;$y<100;$y++)
{
$rgb = imagecolorat($im,$x,$y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
if($r<128 && $g<128 && $b<128){
printf("%d,%d: %d,%d,%d'n",$x,$y,$r,$g,$b);
exit;
}
}
}
for($x1=1170;$x1<1270;$x1++){
for($y1=0;$y1<100;$y1++){
$rgb = imagecolorat($im,$x1,$y1);
$r1 = ($rgb >> 16) & 0xFF;
$g1 = ($rgb >> 8) & 0xFF;
$b1 = $rgb & 0xFF;
if($r1<128 && $g1<128 && $b1<128){
printf("%d,%d: %d,%d,%d'n",$x1,$y1,$r1,$g1,$b1);
exit;
}
}
}
电流输出:30,53:123119118
所需输出:30,53:123119118
1217,55:1115114112
您可以使用break 2;
从两个嵌套的for循环中断开,x1
和y1
的下一个for循环也将执行。
退出
exit—输出消息并终止当前脚本
模具
die——相当于退出
因此,你不能那样做。然而,您可以重新思考您的解决方案,因为您不必在那里使用exit,因为您想继续执行,那么exit
就在错误的位置。
现在是解决方案:当你的条件得到满足时,你可以打破你的循环。
中断
break结束当前for、foreach、while、do-while或switch结构的执行。
这样你的循环就结束了,你就可以不退出地继续下一个循环。
嗯,这是不可能的。
exit; // equal to: die;
exit(); // equal to: die();
exit('I died'); // equal to: die('I died');
是设计用来杀死PHP进程的语言构造。正如手册所说:
输出消息并终止当前脚本
如果希望脚本继续,请不要使用它。
在循环中,您可以使用两种您可能感兴趣的成本结构:
break;
-立即结束循环并在循环后继续代码continue;
-立即跳过当前循环迭代并进入下一次迭代
您不应该使用die()
或exit()
,而应该使用break
函数。点击这里,了解更多信息。
只有当您想结束脚本时,才应使用exit()
或和die()
。
exit——在此处输出一条消息并终止当前脚本文档。
die——相当于退出,这里有文档。
检查http://php.net/manual/en/control-structures.break.php
根据你的范围,你可以使用中断1或中断2,
$i = 0;
while (++$i) {
switch ($i) {
case 5:
echo "At 5<br />'n";
break 1; /* Exit only the switch. */
case 10:
echo "At 10; quitting<br />'n";
break 2; /* Exit the switch and the while. */
default:
break;
}
}
除非使用condition或switch语句,否则不能在die()
或exit()
之后运行脚本。
如果您希望在页面呈现后继续运行脚本,则可能需要运行后台php进程,除非您要求在for循环终止时只对页面进行更多更改,否则在这种情况下,最好使用break;
。
堆栈溢出php后台进程