我只是想知道为什么这段代码会返回1
$complete = 'complete';
$completed = ($complete == 'complete') ?: 'Not Complete';如果我试试这个
$complete = 'complete';
$completed = ($complete == 'complete') ? $complete : 'Not Complete';还有这张
$complete = 'complete';
if ($complete == 'complete') {
$completed = $complete;
} else {
$completed = 'Not Complete';
}他们都会返回'complete'
基于这个?: operator (the 'Elvis operator') in PHP
难道它们不都应该返回相同的值吗?
发布于 2018-04-16 10:28:54
这是因为在第一个示例中进行了布尔检查:
$complete == 'complete' // returns 'true'
运算符告诉,如果语句为true,则返回语句的值,否则返回“not”。所以确实如此。true表示为1。
你的例子解释如下:
// 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';
}发布于 2018-04-16 10:35:38
您可以这样使用Elvis操作符:
$completed = $complete ?: 'Not Complete';在您的代码中,有一个类似于本例的语句:
$completed = true ?: 'Not Complete';因此,它返回true。
https://stackoverflow.com/questions/49854998
复制相似问题