繁体   English   中英

这是全局变量吗? PHP

[英]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!"

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM