【问题标题】:Ternary Operator Question三元运算符问题
【发布时间】:2011-10-24 11:24:49
【问题描述】:

谁能给我一个例子,说明如何使用 PHP 三元运算符,它将使用 $_GET(可以在 URL 中定义)检查变量,如果它不在 URL 中,则检查 var 是否设置在另一个 PHP 文件。如果它没有在 URL 或其他 PHP 文件中设置,那么我希望它等于“默认”。

【问题讨论】:

  • 那么,没有三元组你会怎么做呢?一旦完成,改变表格——如果可行的话——就变成了一个微不足道的练习。 (也就是说,显示 现有代码 以执行所需的操作。)
  • “检查 var 是否设置在另一个 PHP 文件中”到底是什么意思?如果包含这个其他 PHP 文件并且该变量不是类等的一部分,则它就像在该文件中定义的一样,下面的答案应该会有所帮助。但是,如果您对“另一个 PHP 文件”有任何其他含义,您应该添加一些详细信息。
  • 很抱歉没有解释,但解释一下还是不错的。基本上,我想为每个状态使用不同的 URL 来显示各种状态,然后我还需要在整个站点的许多页面中显示这些不同的状态,我只想在包含之前将它们设置在每个文件的顶部而不必担心在这些页面的链接中包含查询字符串。希望这是有道理的!

标签: php variables get ternary-operator


【解决方案1】:
$myVar = isset($_GET["someVar"]) ? $_GET["someVar"] : (isset($someVar) ? $someVar : "default");

【讨论】:

    【解决方案2】:
    $value = isset($_GET['somevar']) ? $_GET['var'] : $default_value;
    

    在最新的 PHP 版本中,有一个快捷版本:

    $value = isset($_GET['somevar']) ?: $default_value;(和第一版不一样)

    您可以使用$GLOBALS['nameofvar'] 来查看是否还定义了特定的 PHP 变量,但如果您在函数内部进行检查,则会出现问题。

    【讨论】:

    • 该快捷方式是否可以与isset 一样正常工作?我的理解是它将返回表达式的结果(在isset(...) 的情况下为true),因此您需要使用类似$_GET['somevar'] ?: $default_value;
    • 如果脚本的查询中没有somevar,那么$_GET['somevar'] 将不存在并且isset() 将返回false。但是,没有什么说脚本的其他部分在到达此三元运算符之前无法处理 $_GET。
    • 注意:因为 isset 返回一个布尔值,如果设置了$_GET['somevar'],则快捷版本中的$value 将是布尔值true
    • 对,但是isset($_GET['somevar']) 的计算结果与$_GET['somevar'] 不同...这意味着使用三元快捷方式isset($_GET['somevar']) ?: $default_value; 将返回1 if $_GET['somevar' ] 被设置,而不是 $_GET['somevar'] 的值。 编辑: @Glass Robot 所说的。干杯。
    • 啊,我明白了。误读了。你说得对。第二个版本与第一个版本不同。这是漫长的一天......
    【解决方案3】:

    你在寻找这样的东西吗:

    if(isset($_GET["MyVar"]))
    {
        $newVar = $_GET["MyVar"];
    }
    else if(isset($myVar))
    {
        $newVar = $myVar;
    }
    else
    {
        $newVar = "default";
    }
    

    $newVar = isset($_GET["MyVar"]) ? $_GET["MyVar"] : (isset($myVar) ? $myVar : "default");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-09
      • 2015-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-12
      相关资源
      最近更新 更多