首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >三值算子(猫王算子)

三值算子(猫王算子)
EN

Stack Overflow用户
提问于 2018-04-16 10:24:29
回答 2查看 283关注 0票数 0

我只是想知道为什么这段代码会返回1

代码语言:javascript
复制
$complete = 'complete';
$completed = ($complete == 'complete') ?: 'Not Complete';

如果我试试这个

代码语言:javascript
复制
$complete = 'complete';
$completed = ($complete == 'complete') ? $complete : 'Not Complete';

还有这张

代码语言:javascript
复制
$complete = 'complete';
if ($complete == 'complete') {
    $completed = $complete;
} else {
    $completed = 'Not Complete';
}

他们都会返回'complete'

基于这个?: operator (the 'Elvis operator') in PHP

难道它们不都应该返回相同的值吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-16 10:28:54

这是因为在第一个示例中进行了布尔检查:

$complete == 'complete' // returns 'true'

运算符告诉,如果语句为true,则返回语句的值,否则返回“not”。所以确实如此。true表示为1

你的例子解释如下:

代码语言:javascript
复制
// sets '$completed' to '($complete == 'complete')' what is 'true'
$completed = ($complete == 'complete') ?: 'Not Complete';

// sets '$completed' to '$completed', what is 'NULL', because '$completed' seems to be undefined before
$completed = ($complete == 'complete') ? $completed : 'Not Complete';

// sets '$completed' to the value of '$complete', because the statement is 'true'
if ($complete == 'complete') {
    $completed = $complete;
} else {
    $completed = 'Not Complete';
}
票数 4
EN

Stack Overflow用户

发布于 2018-04-16 10:35:38

您可以这样使用Elvis操作符:

代码语言:javascript
复制
$completed = $complete ?: 'Not Complete';

在您的代码中,有一个类似于本例的语句:

代码语言:javascript
复制
$completed = true ?: 'Not Complete';

因此,它返回true。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49854998

复制
相关文章

相似问题

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