2012-04-17 72 views
-2

在我的最后一个项目,我不得不指定一个值,通常我用以下语句:为什么一个简单的||像if序列一样工作?

<?php 
    $true = 1; 
    $false = 0; 
    $hasAccess = $true ? 1 : 0; 
    print $hasAccess; 
?> 

但工程:

<?php 
    $true = 1; 
    $false = 0; 
    $hasAccess = $true || $false; 
    print $hasAccess; 
?> 

为什么?

更新:我知道什么是OR/||是,我必须期望它。但是我以前从未见过这种可能性。

+1

而你为什么不直接写$ hasAccess = 1? – alfa 2012-04-17 09:18:30

+2

看到名为'$ true'的变量不是布尔值会让我感到不安...... – 2012-04-17 09:19:48

+2

PHP手册是无用的吗? – hakre 2012-04-17 09:25:34

回答

1

因为

$true ? 1 : 0; 

评估为1,因为$true是真实的,

$true || $false; 

也计算为1,出于同样的原因。

+2

最后一个没有评价为“真”吗? – Svish 2012-04-17 09:19:41

0

的或将要如果表达式的任一侧为真,则返回true。

由于$ true = 1,所以表达式作为一个整体是真实的。

基本上你说:“如果$真实不虚,或$假为真,那么则$ hasAccess是真正的”

0

的||这是一个OR语句返回天气,其中一个语句的计算结果为true。 示例:

$bool = true || false; 
// $bool = true 

$bool = false || true; 
// $bool = true 

$bool = false || false; 
// $bool = false 

$bool = false || true || false; 
// $bool = true 

$bool = false || 1; 
// $bool = true 

$bool = false || 'test'; 
// $bool = true 
相关问题