可以在IF中使用全局变量吗?

时间:2012-04-30 10:41:31

标签: php if-statement global-variables accessible

可以某种方式在IF的一部分中定义的变量可以在同一IF的另一部分中访问吗?

例如:

if ($a == 1)
{
  $b = "ABC";
}
elseif ($a == 2)
{
 echo $b;
}

在函数中我使用全局$变量但在IF语句中我不知道。

我之所以这么说是因为我正在逐步制作注册页面 这意味着我需要多次检查If语句,在最后一步中我需要从所有IF中收集所有变量。

4 个答案:

答案 0 :(得分:3)

您理解它们的方式有没有“全局”变量 所有PHP变量在执行后都注定要死掉所有PHP脚本。

您需要一些存储空间来保存变量 PHP sessions是个不错的选择。

答案 1 :(得分:1)

PHP中的IF语句更改变量范围 - 与函数不同。因此,只要您保持在相同的范围内,您在IF中执行的任何操作都将在if之外可见。您不需要使用GLOBAL。实际上,应尽可能少地使用全球范围。

全局语句只是扩大了范围,允许PHP“看到”否则将被隐藏的内容。您仍然需要了解变量范围,因为范围的交互并不总是很明显。我建议回去阅读优秀的PHP文档。您可能需要仔细阅读几次并在点击之前进行一些实验。

你的代码的问题在于,除非它在你没有显示的循环中,否则你永远不会看到$ b的值,因为if语句是分支而你只会永远执行一个从不超过1的分支。

您的示例的另一个问题是您正在使用链接的if语句,这可以更好地编写为:

switch ($a) {
    case 1:
        $b = "ABC";
        break;
    case 2:
        # $b will ALWAYS be empty unless you set it BEFORE the switch OR
        # you loop back to the switch AFTER $a=1
        echo $b;
        break;
    default:
        echo "i is not equal to 1 or 2";
}

请参阅:http://php.net/manual/en/control-structures.switch.php

这种形式阅读起来更清晰,更简单和更简单。随着案件数量的增加,这种情况会越来越强大。

答案 2 :(得分:0)

好吧不看$只有1个值它可能是1或2或其他东西,如果它的1然后$ b = ABC并且它永远不会出现在你的elseif条件下,如果$ a是2那么它永远不会进入你的第一个条件但是,你可以在条件之前定义$ b。

$b = "something";
if ($a == 1)
{
  $b = "ABC"; // $b is ABC if $a = 1
}
elseif ($a == 2)
{
 echo $b; // output : something, if $a  = 2
}

答案 3 :(得分:-2)

$b = Null
if ($a == 1)
{
  $b = "ABC";
}
elseif ($a == 2)
{
 echo $b;
}