ome*_*ega 17 html php code-design
在PHP中,是否可以退出PHP代码块(即PHP标记)?
<?php
if (!A) phpexit();
print("1");
?>
<?php
print("2");
?>
Run Code Online (Sandbox Code Playgroud)
所以,如果A是真的,那么结果是12,如果A是假,那么结果是2.
我知道你可以用if语句或其他东西来做这个,但我想知道是否还有一些特殊的PHP函数可以做到这一点.
gd1*_*gd1 31
有goto操作员,但我强烈建议不要使用这种技巧("意大利面条代码").你最好使用结构化if块,它们没有任何问题.
在使用之前goto,请考虑替代解决方案:例如,您可以include根据A条件使用不同的脚本.

Jan*_*roň 18
可能有两种解决方案:
1)少hacky
在单独的文件中包含块中的代码.您可以return在其中使用它来停止处理包含的文件
//file1.php
if (!A) return;
print("1");
// file2.php
print("2");
<?php include "file1.php";?>
<?php include "file2.php";?>
Run Code Online (Sandbox Code Playgroud)
2)更hacky(其他人可能会杀了我)
将块放入do { ... } while(false);块中并从中断
<?php do {
if (!A) break;
print("1");
} while(false); ?>
<?php do {
print("2");
} while(false); ?>
Run Code Online (Sandbox Code Playgroud)
bwo*_*ebi 12
不,没有.但是你可以做的是在每个块的末尾添加一个标签然后使用goto(不推荐,但是当你不想要一个大if...时...(ps:在这里看到@ gd1的答案作为提示;-P )).
<?php
if (!A) goto exit_1;
print("1");
exit_1: ;
?>
<?php
print("2");
exit_2: ;
?>
Run Code Online (Sandbox Code Playgroud)
如果这只是一个实验,你做错了.停止使用面向包含的编程作为开始学习OOP.
嗯...你总是可以<?php ?>用匿名函数包装内容;
<?php $f = function () use (&$a) {
if ($a)
{
echo 1;
return;
}
echo 2;
};$f(); ?>
<?php $f = function () {
echo 2;
};$f(); ?>
Run Code Online (Sandbox Code Playgroud)
这适用于PHP 5.3+.如果需要共享变量,可以use()在定义中使用statement 注入它们.
但让我再说一遍:
如果你想在生产代码中做这样的事情,你做错了.
如果你太过尊重极客流行文化并觉得你需要适应(并且受欢迎!),这里的解决方案没有goto:
<?php
call_user_func(function() {
if (!A) return;
print("1");
});
?>
<?php
print("2");
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5031 次 |
| 最近记录: |