为什么简单||像if序列那样工作?

时间:2012-04-17 09:15:00

标签: php if-statement

在我的上一个项目中,我必须指定一个值,通常我使用以下语句:

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

但这适用于:

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

为什么?

更新: 我知道什么是OR / ||是和我所期待的。但我以前没有见过这种可能性。

4 个答案:

答案 0 :(得分:1)

因为

$true ? 1 : 0;

评估为1,因为$true为真,

$true || $false;
出于同样的原因,

也会评估为1

答案 1 :(得分:1)

因为0被自动转换为(bool)false,而其他任何东西(bool)都是真的。 所以你基本上说的是:

$hasaccess = true OR false;

另见: http://php.net/manual/en/language.types.boolean.php http://php.net/manual/en/language.operators.logical.php

答案 2 :(得分:0)

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

由于$ true = 1,因此表达式整体为真。

基本上你说“如果$ true为真,或者$ false为真,则$ hasAccess为真”

答案 3 :(得分: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