【问题标题】:Using a variable from another condition in PHP在 PHP 中使用来自另一个条件的变量
【发布时间】:2014-09-30 14:36:10
【问题描述】:

我有这个代码:

if(!isset($_GET["act"]))
{
    $display->display("templates/install_main.html");
    if(isset($_POST["proceed"]))
    {
        $prefix = $_POST["prefix"];
    }
}

if($_GET["act"] == "act")
{
    echo $prefix;
}

基本上我之前也提出过类似的问题,问题是,我怎样才能使变量可访问?请提及是否有任何方法可以做到这一点,即使改变它的完成方式(有人告诉我这可以通过课程但不太确定如何完成),或任何其他使其可访问的方式。

谢谢!

【问题讨论】:

  • 由于你的$_GET['act']条件不能同时为true,所以$prefix变量不能存在于第二个条件中。这不是关于“变量访问”或范围,而是关于简单的逻辑。
  • 不,不是!我试过...
  • $echo 要么永远不会被尝试回显,要么永远不会在尝试时被定义。 if(!isset($_GET["act"]))if($_GET["act"] == "act") 不能同时为真。

标签: php class variables post get


【解决方案1】:

PHP 的变量范围是函数级的。 $prefix 将在您的第二个 if() IF 中可用,另一个 if() 被评估为 true 并实际执行该 $prefix = ... 代码。

例如

if (true) {
    $foo = 'bar'; // always executes
}
if (false) {
    $baz = 'qux'; // never executes
}
echo $foo; // works just fine
echo $baz; // undefined variable, because $baz='qux' never executed.

另请注意,PHP 无法进行时间旅行:

echo $x; // undefined variable;
$x = 'y';
echo $y; // spits out 'y'

“较早”的代码将没有“较晚”的变量可用,因为实际为这些变量创建/分配值的代码尚未执行。

【讨论】:

  • 那么我该如何解决呢?
  • 修正你的逻辑。您的两个外部 if 是逻辑对立的。第一个只有在 $_GET['act'] 不存在时才成立,而第二个(使用 $prefix)要求它存在并且有一个值。他们不可能都是真的。如果 $_GET['act'] 存在,则不会设置 $prefix。如果它确实存在,那么 $prefix 将无法使用。
  • 我试图用 ifs 做的是根据页面上的阶段显示不同的 HTML 部分和不同的代码 sn-p,我仍然希望这样,我应该怎么做保留它并对其进行逻辑编码?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-13
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
  • 2021-03-28
相关资源
最近更新 更多