[英]is this global variables? PHP
我不知道这行代码的名称是什么..我什至不知道即时消息是否在执行正确的代码结构..我无法研究Google,因为我不知道要搜索什么..: )
无论如何,这是代码。
<?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:
?>
感谢您的建议和答案.. :)
<?php
$hello = 1;
switch($hello)
{
case 1:
FOO();
break;
case 2:
BAR();
break;
}
function FOO() {
echo "hello world!";
}
function BAR() {
echo "hola world!";
}
?>
您将得到一个致命错误,因为它会告诉您label FOO is already defined
。
Crayon Violet为此提供了一个很好的解决方法。 我建议使用他的方法,因为您不必使用GOTO。 并不是说正确使用GOTO会很不好,但是在这种情况下,我会说这不是很好的用法。
someText:
语法用于goto
控件结构 。
实际上,您的代码没有执行预期的操作。 我以为它不会运行,但也许可以。
在所有情况下,它只会输出hello world!hola world!
,因为该switch
不执行任何操作,然后执行了两个echo
。
可能预期的是,交换机内部有两个goto
。 在这种情况下,如果$hello
等于1,则代码将显示hello world!hola world!
,如果等于2,则只有hola world!
将显示。 请注意,您应该尽可能避免使用goto
,因此, 在这里, Crayon Violent对此问题的答案包含一个更好的选择(即使流程被修改并且会得到比getos更高的结果)。
我相信您在问什么是全球范围。
$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!"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.