可以某种方式在IF的一部分中定义的变量可以在同一IF的另一部分中访问吗?
例如:
if ($a == 1)
{
$b = "ABC";
}
elseif ($a == 2)
{
echo $b;
}
在函数中我使用全局$变量但在IF语句中我不知道。
我之所以这么说是因为我正在逐步制作注册页面 这意味着我需要多次检查If语句,在最后一步中我需要从所有IF中收集所有变量。
答案 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;
}