-1

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

前任:

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

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

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

4

4 回答 4

3

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

您需要一些存储空间来保存请求之间的变量。
PHP 会话是一个不错的选择。

于 2012-04-30T10:51:27.297 回答
1

PHP 中的 IF 语句不会更改变量范围 - 与函数不同。因此,只要您保持在同一范围内,您在 IF 中所做的任何事情都将在 if 之外可见。您不需要使用 GLOBAL。实际上,应该尽可能少地使用全局范围。

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

随着案例数量的增加,这种形式更容易阅读,也更简单、更健壮。

于 2012-05-01T09:37:42.090 回答
0

好吧,不看 $a 只有 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
}
于 2012-04-30T10:46:04.140 回答
-2
$b = Null
if ($a == 1)
{
  $b = "ABC";
}
elseif ($a == 2)
{
 echo $b;
}
于 2012-04-30T10:44:37.250 回答