我不知道这行代码的名称是什么..我甚至不知道我是否正在做正确的代码结构..我不能研究谷歌因为我不知道搜索什么.. :))
无论如何,这是代码..
<?php
$hello = 1;
switch($hello)
{
case 1:
FOO:
break;
case 2:
BAR:
break;
}
FOO:
echo "hello world!";
BAR:
echo "hola world!";
?>
如果$ hello == 1的值,输出是否为“hello world!”? 如果$ hello == 2的值,输出会是“hola world!”吗?
我让这个工作..
<?php
$hello = '1';
switch($hello)
{
case '1':
goto FOOO;
break;
case '2':
goto BARR;
break;
}
FOOO:
echo "hello world!";
goto LAST;
BARR:
echo "hola world!";
LAST:
?>
感谢您的建议和答案.. :)
答案 0 :(得分:1)
<?php
$hello = 1;
switch($hello)
{
case 1:
FOO();
break;
case 2:
BAR();
break;
}
function FOO() {
echo "hello world!";
}
function BAR() {
echo "hola world!";
}
?>
答案 1 :(得分:0)
您将收到致命错误,因为它会告诉您label FOO is already defined
。
Crayon Violet有一个很好的解决方法。我会推荐他的方法,因为你不必使用GOTO。并非正确使用GOTO是坏的,但在这种情况下,我会说它不会很好用。
答案 2 :(得分:0)
someText:
语法用于goto
control structure。
实际上,您的代码没有按预期执行。我认为它不会运行,但也许它会运行。
在所有情况下,它只会输出hello world!hola world!
,因为switch
什么都不做,然后会执行两个echo
。
可能,预期在交换机内部有两个goto
。在这种情况下,如果$hello
等于1,则代码将显示hello world!hola world!
,如果等于2,则仅显示hola world!
。请注意,您应该尽可能避免使用goto
,因此,the answer by Crayon Violent to this question包含更好的替代方案(即使流程已被修改,并且会提供除gotos之外的其他结果)。
答案 3 :(得分:0)
我相信你在问全球范围是什么。
$hello = 1;
$hello = 'hello world!';
$hola = 'hola world!';
function globalvars($x) {
global $hello,$hola;
switch($x)
{
case 1:
echo $hello;
break;
case 2:
echo $hola;
break;
}
}
globalvars($hello); // "hello world!"
globalvars(2); // "hola world!"