gpt4 book ai didi

php - 是否可以在同一个 if block 中运行多个 elseif block ?

转载 作者:可可西里 更新时间:2023-11-01 00:15:52 26 4
gpt4 key购买 nike

$foo=1;

function someFunction(){
if($foo==0){ //-------Will test, won't execute
bar();
}elseif($foo==1){ //--Will test, and execute
baz();
}elseif($foo==2){ //--Doesn't test
qux();
}elseif($foo==3){ //--Doesn't test
quux();
}else{ //-------------Doesn't test
death();
} //------------------The program will skip down to here.
}

假设 baz() 改变了 $foo 的值并且每​​次都不同。我希望我的代码在第一个语句之后继续测试 elseif/else 语句,并在它们为真时运行它们。

我不想再次运行整个函数(即我不关心 $foo = 0 还是 1)。我正在寻找类似“继续;”的东西。无论如何,请让我知道这是否可能。谢谢。 :)

编辑** 我的代码实际上比这复杂得多。我只是为了理论而写下一些代码。我想要的只是在通常不会测试的地方继续测试的脚本。

最佳答案

如果我没理解错的话,你想做每个连续的 elseif,不管前面的 if/elseif 是否匹配,但是如果 if/elseifnone 匹配,您还希望运行一些代码。在这种情况下,您可以将标志 $matched 设置为 true 如果其中一个匹配并使用 ifs 代替。

<?php
$foo=1;
function someFunction(){
$matched = false;
if($foo==0){
bar();
$matched = true;
}
if($foo==1){ //--This elseif will get executed, and after it's executed,
baz();
$matched = true;
}
if($foo==2){
qux();
$matched = true;
}
if($foo==3){
quux();
$matched = true;
}
if(!$matched){ /* Only run if nothing matched */
death();
}
}

如果你还想跳到最后,使用goto (但是 see this first ):

<?php
$foo=1;
function someFunction(){
$matched = false;
if($foo==0){
bar();
$matched = true;
goto end: // Skip to end
}
if($foo==1){ //--This elseif will get executed, and after it's executed,
baz();
$matched = true;
}
if($foo==2){
qux();
$matched = true;
}
if($foo==3){
quux();
$matched = true;
}
if(!$matched){ /* Only run if nothing matched */
death();
}
end:
}

关于php - 是否可以在同一个 if block 中运行多个 elseif block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10692296/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com