【问题标题】:checking for null and assigning in php [duplicate]检查空值并在php中分配[重复]
【发布时间】:2012-10-11 23:15:18
【问题描述】:

可能重复:
Where can I read about conditionals done with ? and :

我想在不使用 if else 或三元运算符的情况下执行以下操作:

如果$_GET['a'] 不为空,则设置$a= $_GET['a'],否则将其值设置为"default"

我试过$a= $_GET['a'] || "default"。但它不起作用。 我记得在代码示例中看到过类似的东西,但我现在想不起来了。

【问题讨论】:

  • 一个简单的谷歌搜索会给你php.net/manual/en/function.is-null.php
  • 他说他不想要三元运算符
  • 然后只需使用 if 或真正了解运算符。它们被记录在案。 (NULL !== $a = $_GET['a']) || $a = "default";。这是微不足道的材料。
  • 虽然我不太确定我是否理解 OP 试图实现的目标,但我很确定他没有问“如何确定变量是否包含 null”,并明确表示他 DIDN '不想使用三元运算符...
  • 从 PHP 5.3 开始,可以使用更短的三元运算符版本,因此您可以编写:$a= @$_GET['a'] ?: "default"; - 这几乎等同于 javascript 中的 a = something || 'default';(除了它可能会引发 E_NOTICE错误,因此我添加了@)。从 PHP7 开始,您可以使用完全等效的空合并运算符:$a= $_GET['a'] ?? "default";

标签: php ternary-operator


【解决方案1】:

【讨论】:

  • 不仅仅是链接。它们会随着时间的推移而消失。添加代码示例。否则,只需使用链接发表评论。
【解决方案2】:

如果你最好的选择,我认为三元组。

在这种情况下,我会使用 isset 检查 - 来确定密钥是否已设置且不为空:

$a = isset($_GET['a']) ? $_GET['a'] : "default"

or 运算符|| 不能像在 PHP 中那样用于空合并,但您可能已经在 J​​avaScript 中看到它,它可用于为第一个非 false 结果设置值:

例如

var a = get['a'] || 'default';

【讨论】:

    【解决方案3】:

    好吧,这里的人似乎没有费心阅读整个问题。

    您编写的该语法适用于其他一些语言,但显然不适用于 php。如果您要在页面上大量使用这种验证,我认为您应该坚持使用三元运算符或为此编写一个函数作为快捷方式。

    function GET($v, $default)
    {
        return !isset($_GET[$v]) || empty($_GET[$v]) ? $default : $_GET[$v];
    }
    
    $a = GET("a", "default");
    

    【讨论】:

      猜你喜欢
      • 2013-08-22
      • 2017-04-20
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 2017-09-08
      • 1970-01-01
      • 1970-01-01
      • 2012-07-19
      相关资源
      最近更新 更多