如何根据PHP中另一个变量的存在定义变量的条件简写?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (10)

从本质上讲,我希望能够将变量定义为一件事,除非该事物不存在。我发誓,在某处我看到一个简短的条件,看起来像这样:

$var=$_GET["var"] || "default";

但我找不到任何文档来做这件事,说实话,它可能是JS或ASP或我看到它的东西。

我明白,在上面的代码中应该发生的只是检查两个语句是否返回true。但我认为我看到有人做了一些本质上定义了默认的事情,如果第一次失败。这是否有人知道并能帮助我?我疯了吗?说这样看似多余:

$var=($_GET["var"]) ? $_GET["var"] : "default";

或者特别多余地说:

if ($_GET["var"]) { $var=$_GET["var"]; } else { $var="default"; }
提问于
用户回答回答于

Matthew已经提到了在PHP 5.3中实现它的唯一方法。请注意,你也可以链接它们:

$a = false ?: false ?: 'A'; // 'A'

这不是一样的:

$a = false || false || 'A'; // true

这就是为什么PHP在这方面与大多数传统语言一样。逻辑OR总是返回truefalse。但是,在JavaScript中,使用了最终表达式。(在一系列OR中,它将是第一个非错误的)。

var a = false || 'A' || false; // 'A' 
var b = true && 'A' && 'B';    // 'B';
用户回答回答于

在这种情况下,应该检查$ _GET中是否存在变量,然后检查它是否对你的参数有效。例如:

$var = (isset($_GET["var"]) && $_GET['var'] !== '') ? $_GET["var"] : "default";

但是,这可能会很快变得难以理解。我会说保持它的可读性,首先将你的变量初始化为一个安全的默认值,然后用外部变量覆盖它,如果这是有效的:

$var = "default";
if (isset($_GET['var') && $_GET['var'] !== '') {
    $var = $_GET['var] ;
}

至于你的第一个例子,$var=$_GET["var"] || "default";存在于Javascript中:var someVar = incomingVar || "default";

扫码关注云+社区