基于 PHP 中另一个变量的存在来定义一个变量的简写条件
基本上,我希望能够将一个变量定义为一个事物,除非该事物不存在.我发誓在某处我看到了一个类似这样的速记条件:
Essentially, I'd love to be able to define a variable as one thing unless that thing doesn't exist. I swear that somewhere I saw a shorthand conditional that looked something like this:
$var=$_GET["var"] || "default";
但我找不到任何文档可以正确执行此操作,老实说,它可能是 JS 或 ASP 或我看到的其他东西.
But I can't find any documentation to do this right, and honestly it might have been JS or ASP or something where I saw it.
我知道上面代码中应该发生的只是检查任一语句是否返回 true.但我想我看到有人做了一些基本上定义了默认值的事情,如果第一次失败.这是任何人都知道并可以帮助我的事情吗?我疯了吗?说起来似乎是多余的:
I understand that all that should be happening in the above code is just to check if either statement returns true. But I thought I saw someone do something that essentially defined a default if the first failed. Is this something anyone knows about and can help me? Am I crazy? It just seems redundant to say:
$var=($_GET["var"]) ? $_GET["var"] : "default";
或者说特别多余:
if ($_GET["var"]) { $var=$_GET["var"]; } else { $var="default"; }
想法?
推荐答案
Matthew 已经提到了在 PHP 5.3 中实现它的唯一方法.请注意,您也可以将它们链接起来:
Matthew has already mentioned the only way to do it in PHP 5.3. Note that you can also chain them:
$a = false ?: false ?: 'A'; // 'A'
这不等于:
$a = false || false || 'A'; // true
原因是 PHP 在这方面和大多数传统语言一样.逻辑 OR 总是返回 true
或 false
.但是,在 JavaScript 中,使用了最终表达式.(在一系列 OR 中,它将是第一个非假的.)
The reason why is that PHP is like most traditional languages in this aspect. The logical OR always returns true
or false
. However, in JavaScript, the final expression is used. (In a series of ORs, it will be the first non-false one.)
var a = false || 'A' || false; // 'A'
var b = true && 'A' && 'B'; // 'B';
相关文章