这是全局变量吗? PHP

时间:2010-09-06 01:29:32

标签: php

我不知道这行代码的名称是什么..我甚至不知道我是否正在做正确的代码结构..我不能研究谷歌因为我不知道搜索什么.. :))

无论如何,这是代码..

<?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:
?>

感谢您的建议和答案.. :)

4 个答案:

答案 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!"

http://php.net/manual/en/language.variables.scope.php