首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >速记条件,用于根据PHP中存在的另一个变量定义一个变量

速记条件,用于根据PHP中存在的另一个变量定义一个变量
EN

Stack Overflow用户
提问于 2010-09-18 03:40:33
回答 3查看 21.5K关注 0票数 18

从本质上讲,我希望能够将一个变量定义为一个东西,除非那个东西不存在。我发誓我在某个地方看到了一个速记条件,看起来像这样:

代码语言:javascript
复制
$var=$_GET["var"] || "default";

但我找不到任何文档来正确地做这件事,老实说,它可能是JS或ASP或其他我看到它的地方。

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

代码语言:javascript
复制
$var=($_GET["var"]) ? $_GET["var"] : "default";

或者特别多余地说:

代码语言:javascript
复制
if ($_GET["var"]) { $var=$_GET["var"]; } else { $var="default"; }

有什么想法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-18 03:58:46

Matthew已经提到了在PHP 5.3中实现这一点的唯一方法。请注意,您还可以将它们链接起来:

代码语言:javascript
复制
$a = false ?: false ?: 'A'; // 'A'

这与以下内容不同:

代码语言:javascript
复制
$a = false || false || 'A'; // true

原因是PHP在这方面与大多数传统语言相似。逻辑OR始终返回truefalse。但是,在JavaScript中,使用的是最后一个表达式。(在一系列OR中,它将是第一个非假OR。)

代码语言:javascript
复制
var a = false || 'A' || false; // 'A' 
var b = true && 'A' && 'B';    // 'B';
票数 16
EN

Stack Overflow用户

发布于 2010-09-18 03:57:36

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

代码语言:javascript
复制
$var = (isset($_GET["var"]) && $_GET['var'] !== '') ? $_GET["var"] : "default";

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

代码语言:javascript
复制
$var = "default";
if (isset($_GET['var') && $_GET['var'] !== '') {
    $var = $_GET['var] ;
}

对于您的第一个示例,Javascript中存在$var=$_GET["var"] || "default";var someVar = incomingVar || "default";

票数 8
EN

Stack Overflow用户

发布于 2014-06-02 23:20:39

我总是用空的。

代码语言:javascript
复制
$var = !empty($_GET['var'])?$_GET['var']:'default';
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3738451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档