PHP布尔型数据类型 false true 用法介绍

 更新时间:2016年11月25日 15:04  点击:2253
在php中false true是真与假的意思,在php中叫做布尔型数据类型,他是我们常见的一种数据类型,如条件判断也是布尔型数据类型,下面我们给大家介绍介绍。

语法

要指定一个布尔值,使用关键字 TRUE 或 FALSE。两个都不区分大小写。

 代码如下 复制代码

<?php
$foo = True; // 赋值 TRUE to $foo
?>

通常你用某些运算符返回 boolean 值,并将其传递给控制流程。

 代码如下 复制代码

// == 真值判断语句
// equality and returns a boolean
if ($action == "show_version") {
    echo "The version is 1.0";
}

// 这样写不是必须的...
if ($show_separators == TRUE) {
    echo "<hr> ";
}

// 直接写,更简单些
if ($show_separators) {
    echo "<hr> ";


布尔类型是PHP中 最简单的类型。它的值可以为 TRUE 或 FALSE。

如:

 代码如下 复制代码

$foo=false;
$foo1=true;
echo "为假时输出值为:".$foo; //没有输出值
echo "<br />为真时输出值为:".$foo1; //输出1

这里主要的细节:

当转换为 boolean 时,以下值被认为是 FALSE :

1、the 布尔值 FALSE 自身
2、the 整型值 0 (零)
3、the 浮点型值 0.0 (零) 空 字符串, 以及 字符串 "0"
4、不包括任何元素的数组
5、不包括任何成员变量的对象(仅PHP 4.0 适用)
6、特殊类型 NULL (包括尚未设定的变量)
7、从没有任何标记(tags)的XML文档生成的SimpleXML 对象

 代码如下 复制代码

//$a=0;
//$a=0.0;
$a="0";
var_dump((bool) 0);
echo "<br />";
var_dump((bool) array());
if($a==false){
echo "空0默认转换为false,成功!";
}else{
echo "不能转换为false";
}

输出:

bool(false)
bool(false) 空0默认转换为false,成功!


转换为布尔值
要明示地将一个值转换成 boolean,用 (bool) 或者 (boolean) 来强制转换。但是很多情况下不需要用强制转换,因为当运算符,函数或者流程控制需要一个 boolean 参数时,该值会被自动转换。

当转换为 boolean 时,以下值被认为是 FALSE:

布尔值 FALSE

整型值 0(零)

浮点型值 0.0(零)

空白字符串和字符串 "0"

没有成员变量的数组

没有单元的对象(仅适用于 PHP 4)

特殊类型 NULL(包括尚未设定的变量)

所有其它值都被认为是 TRUE(包括任何资源)。

条件if else

if 条件语句语法
If 结构是编程语言中最常用的。其语法如下:

if (expr)
  statement
其中,expr 表示条件,statement 表示符合条件后应该执行的语句。意思是,如果符合某个条件 (expr),就执行后面的语句 (statement),如果不符合条件,则什么也不做。

示例如下:

 代码如下 复制代码
<?phpif ($a > $b)  echo "a is bigger than b";?>

上面的示例意思是,如果变量 $a > $b ,则输出 "a is bigger than b",反之,则什么也不做。

符合 if 条件后,如果要执行的语句不止一行,则需要用大括号 {} 将多行语句围起来。示例如下:

 代码如下 复制代码
<?phpif ($a > $b) {  echo "a is bigger than b";  $b = $a;}?>

这个例子的意思是,如果变量 $a > $b ,则输出 "a is bigger than b",并且将 $a 赋值给 $b

算术运算符

1、算术运算符:+、-、*、/、%。

2、递增/递减运算符:如$a++,$a--,++$a,--$a.

如:

 代码如下 复制代码

<?php
$a=10;
$b=5;
$c=$a++; //先赋值,后自增。$c=$a,$a=$a+1
$d=$b--; //先赋值,后自减。$d=$b,$b=$a-1
echo '$a='.$a."||".'$c='.$c.'<br/>'; //$a=11,$c=10
echo '$b='.$b."||".'$d='.$d.'<br/>'; //$b=4,$d=5
?>

<?php
$a=10;
$b=5;
$c=++$a; //先自增,后赋值。$a=$a+1,$c=$a
$d=--$b; //先自减,后赋值。$b=$a-1, $d=$b
echo '$a='.$a."||".'$c='.$c.'<br/>'; //$a=11,$c=11
echo '$b='.$b."||".'$d='.$d.'<br/>'; //$b=4,$d=4
?>

三元运算符

(expr1) ? (expr2) : (expr3);
解释:如果条件“expr1”成立,则执行语句“expr2”,否则执行“expr3”。


以下语句的语法是正确的,它们以小解引号的方式忽略了第二或第三“元”:

 代码如下 复制代码
$a>$b ? print "Yes" : "";
$a>$b ? '': print 'No';

应该注意的是:在使用三元运算符时,建议使用print语句替代echo语句。

注意下列一串语句的理解:

 代码如下 复制代码

$str = $_GET['abc'] ? 'wangjinbo' : 'wjb';

这里不能理解为:当$str等于$_GET['abc']  时,赋值为 'wangjinbo'  否则赋值为 'wjb';因为一:判断相等应该用==;因原二:三元算符的语法是如上所示:(expr1) ? (expr2) : (expr3),显然上面的二元,三元'wangjinbo'或'wjb'不能单独构成一个有意义的表达式;

正确理解是:当$_GET['abc']为空(也就是否,PHP中 '',null,0,undifine,都等效布尔值false)时,将$str赋值为'wangjinbo',否则赋值为'wjb';

逻辑运算符:

如:

 代码如下 复制代码

$a=10;$b=7;
if($a++>8 || $b++>7){ //$a++>8为真,$b++>7这个就不执行了
echo 'OK!';
}
echo 'a='.$a.'b='.$b; // 输出OK,a=11,b=7

改变一下

$a=10;$b=7;
if($a++>10 && $b++>7){ //$a++>8为假,$b++>7这个就不执行了
echo 'OK!';
}
echo 'a='.$a.'b='.$b; // a=11,b=7

细节:and && 都表示逻辑与 ,他们的区别在什么地方?

主要体现在优先级上面

and 的优先级

 代码如下 复制代码
and< = <&&
or < = < ||
如:
$a=false || true; //&& > = > and ;先比较false || true,再赋值
$b=false or true; //|| > = > or ;先赋值$b=false,再比较,所以结果是false
var_dump($a,$b); //bool(true) bool(false)


位运算符

位移在 PHP 中是数学运算。向任何方向移出去的位都被丢弃。左移时右侧以零填充,符号位被移走意味着正负号不被保留。右移时左侧以符号位填充,意味着正负号被保留。

要用括号确保想要的优先级。例如 $a & $b == true 先进行比较再进行按位与;而 ($a & $b) == true 则先进行按位与再进行比较。

要注意数据类型的转换。如果左右参数都是字符串,则位运算符将对字符的 ASCII 值进行操作。

 PHP 的 ini 设定 error_reporting 使用了按位的值,
提供了关闭某个位的真实例子。要显示除了提示级别
之外的所有错误,php.ini 中是这样用的:
E_ALL & ~E_NOTICE
     

具体运作方式是先取得 E_ALL 的值:
00000000000000000111011111111111
再取得 E_NOTICE 的值:
00000000000000000000000000001000
然后通过 ~ 将其取反:
11111111111111111111111111110111
最后再用按位与 AND(&)得到两个值中都设定了(为 1)的位:
00000000000000000111011111110111
     

另外一个方法是用按位异或 XOR(^)来取得只在
其中一个值中设定了的位:
E_ALL ^ E_NOTICE
     

error_reporting 也可用来演示怎样置位。只显示错误和可恢复
错误的方法是:
E_ERROR | E_RECOVERABLE_ERROR
     
也就是将 E_ERROR
00000000000000000000000000000001
和 E_RECOVERABLE_ERROR
00000000000000000001000000000000
用按位或 OR(|)运算符来取得在任何一个值中被置位的结果:
00000000000000000001000000000001

Example #1 整数的 AND,OR 和 XOR 位运算符

 代码如下 复制代码

<?php
/*
 * Ignore the top section,
 * it is just formatting to make output clearer.
 */

$format = '(%1$2d = %1$04b) = (%2$2d = %2$04b)'
        . ' %3$s (%4$2d = %4$04b)' . "n";

echo <<<EOH
 ---------     ---------  -- ---------
 result        value      op test
 ---------     ---------  -- ---------
EOH;


/*
 * Here are the examples.
 */

$values = array(0, 1, 2, 4, 8);
$test = 1 + 4;

echo "n Bitwise AND n";
foreach ($values as $value) {
    $result = $value & $test;
    printf($format, $result, $value, '&', $test);
}

echo "n Bitwise Inclusive OR n";
foreach ($values as $value) {
    $result = $value | $test;
    printf($format, $result, $value, '|', $test);
}

echo "n Bitwise Exclusive OR (XOR) n";
foreach ($values as $value) {
    $result = $value ^ $test;
    printf($format, $result, $value, '^', $test);
}
?>
以上例程会输出:

 ---------     ---------  -- ---------
 result        value      op test
 ---------     ---------  -- ---------
 Bitwise AND
( 0 = 0000) = ( 0 = 0000) & ( 5 = 0101)
( 1 = 0001) = ( 1 = 0001) & ( 5 = 0101)
( 0 = 0000) = ( 2 = 0010) & ( 5 = 0101)
( 4 = 0100) = ( 4 = 0100) & ( 5 = 0101)
( 0 = 0000) = ( 8 = 1000) & ( 5 = 0101)

 Bitwise Inclusive OR
( 5 = 0101) = ( 0 = 0000) | ( 5 = 0101)
( 5 = 0101) = ( 1 = 0001) | ( 5 = 0101)
( 7 = 0111) = ( 2 = 0010) | ( 5 = 0101)
( 5 = 0101) = ( 4 = 0100) | ( 5 = 0101)
(13 = 1101) = ( 8 = 1000) | ( 5 = 0101)

 Bitwise Exclusive OR (XOR)
( 5 = 0101) = ( 0 = 0000) ^ ( 5 = 0101)
( 4 = 0100) = ( 1 = 0001) ^ ( 5 = 0101)
( 7 = 0111) = ( 2 = 0010) ^ ( 5 = 0101)
( 1 = 0001) = ( 4 = 0100) ^ ( 5 = 0101)
(13 = 1101) = ( 8 = 1000) ^ ( 5 = 0101)

比较运算符

如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。此规则也适用于 switch 语句。当用 === 或 !== 进行比较时则不进行类型转换,因为此时类型和数值都要比对。

 代码如下 复制代码

<?php
var_dump(0 == "a"); // 0 == 0 -> true
var_dump("1" == "01"); // 1 == 1 -> true
var_dump("10" == "1e1"); // 10 == 10 -> true
var_dump(100 == "1e2"); // 100 == 100 -> true

switch ("a") {
case 0:
    echo "0";
    break;
case "a": // never reached because "a" is already matched with 0
    echo "a";
    break;
}
?>

 

对于多种类型,比较运算符根据下表比较(按顺序)。

比较多种类型
运算数 1 类型 运算数 2 类型 结果
nullstring string NULL 转换为 "",进行数字或词汇比较
boolnull 任何其它类型 转换为 boolFALSE < TRUE
object object 内置类可以定义自己的比较,不同类不能%
在php中我们要删除一个指定的文件我们可以使用unlink函数来实现,下面我给大家详细介绍unlink函数删除一个指定文件的具体方法,有需要了解的朋友可参考参考。

unlink() 函数删除文件。

若成功,则返回 true,失败则返回 false。

 代码如下 复制代码

<?php
unlink("test.txt");
?>

 代码如下 复制代码

<?php
$file = "test.txt";if (!unlink($file))  {
 echo ("Error deleting $file");  }else  { 
echo ("Deleted $file");  }
?>

加上判断

 代码如下 复制代码

<?php
$file = "test.txt";
if(unlink($file))
{
  echo "文件 $file 删除成功!";
}
else
{
  echo "文件 $file 删除失败!";
}
?>
</body>
</html>


输出结果:

文件 test.txt 删除成功!


下面加了判断文件是否存在:

 代码如下 复制代码

<?php

$myfile = “./test1.txt”;
if (file_exists($myfile)) {
$result=unlink ($myfile);
echo $result;
}
?>

rmdir() 函数删除一个目录,成功返回 TRUE,否则返回 FALSE 。

语法:

bool rmdir( string dirname )

例子:

 代码如下 复制代码

<?php
$dirname = 'testdir';
if (rmdir( $dirname )) {
    echo "目录 $dirname 删除成功";
} else {
    echo "目录 $dirname 删除失败";
}
?>

本文章给大家简单的举例说明在php类和对象之公共属性与私有属性用法,有需要了解的朋友可参考。


私有属性

定义了私有属性(private)的属性只能在该类中使用,在该类中可以通过$this->来调用。而在外部引用私有属性将会报错。

实例:

 代码如下 复制代码

<?php
 class People{
  private $name="li ming";
 }
 $p=new People();
 echo $p->name;
?>


注意:设置了私有属性的字段也不能在子类中使用。

公共属性

在php类的操作中,声明字段时使用public、private、protected、final、const、static来描述对象的数据元素的作用域,这类字符称为限定访问控制字符。

有关键字public声明的属性称为公共属性,可以自由地在类的内部、外部读取和修改。这样做显然不够安全,破坏了类封装性的特点。

如果字段没有被声明,则默认为public。

实例:

 代码如下 复制代码

<?php
 class Man{
  public $name="John"; /* 设定公共属性 */
  var $age=20;
 }
 $a=new Man();
 echo $a->name."<br>";
 echo $a->age;
?>

改变属性值

如果属性声明为public,则可以在外部调用时根据需要改变属性的值或者赋予未定义的属性值。

实例:

 代码如下 复制代码

<?php
 class Man{
  public $name="John"; 
  var $age;
 }
 $a=new Man();
 $a->name="Tom"; /* 改变属性值 */
 $a->age=20; /* 赋予属性值 */
 echo $a->name."<br>";
 echo $a->age;
?>

本文章给大家介绍在php中类和对象的protected与const属性用法,有需要了解的朋友可参考参考。

const属性
用const属性定义的字段是一个常量,类中的常量和静态变量类似,不同之处就是常量的值一旦赋值不能被改变。

const定义常量不需要加$符号,其结构形式如下:

const 常量名称  //常量名称不能用$符号

实例:

 代码如下 复制代码

<?php
 class Date{
  const M="Monday";
 }
 echo "today is ".Date::M;
?>


提示:使用const定义的常量名称一般都大写,这是一个约定,我们要养成一个良好的命名方式习惯。如果定义的常量由多个单词组成,则使用下划线_链接,这也是一个约定。例如:FILE_SIZE。

protected属性

protected限定的字段作用域在public和private之间,若该成员被声明称protected(保护),则代表只能在该类和该类的子类中使用该字段。

实例:

 代码如下 复制代码

<?php            
 class me{          
 protected $Money =100;       
 protected $price1=60;        
 
 public function Sell($price){      
  if($this->price1<=$price){      
   echo "好,卖给你了。<br>";     
   $this->Money = $this->Money+$price;  
   return "我现在总共有 ".$this->Money." 元钱"; 
  }
 else{           
  echo "我不卖 ,$price 太便宜了<br>";    
  return "现在我还是 ".$this->Money." 元钱";  
   }
  }
 }
 
 $now=new me;          
 echo $now->Sell(30);         
?>

[!--infotagslink--]

相关文章

  • php中浮点型(float)和整型(integer)数据类型详解

    文章分析了关于php中浮点型(float)和整型(integer)数据类型的用法区别以及在那种情况下会出现数据长度不够。 取值只能为True或者False,当其他类型转化为boolean类...2016-11-25
  • C#中using的三种用法

    using 指令有两个用途: 允许在命名空间中使用类型,以便您不必限定在该命名空间中使用的类型。 为命名空间创建别名。 using 关键字还用来创建 using 语句 定义一个范围,将在此...2020-06-25
  • c# 数据类型占用的字节数介绍

    本篇文章主要是对c#中数据类型占用的字节数进行了详细的介绍。需要的朋友可以过来参考下,希望对大家有所帮助...2020-06-25
  • Javascript类型转换的规则实例解析

    这篇文章主要介绍了Javascript类型转换的规则实例解析,涉及到javascript类型转换相关知识,对本文感兴趣的朋友一起学习吧...2016-02-27
  • 深入理解PHP变量的值类型和引用类型

    在PHP中,大部分变量类型,如字符串,整型,浮点,数组等都是值类型的,而类和对象是引用类型,在使用的时候,需要注意这一点。看到网友在讨论PHP的&符号,要彻底理解它的用法,就有必要讨论一下变量的两种形式。PHP的变量在内存中是这样...2015-10-23
  • Javascript中的数据类型之旅

    虽然Javascript是弱类型语言,但是,它也有自己的几种数据类型,分别是:Number、String、Boolean、Object、Udefined、Null。其中,Object属于复杂数据类型,Object 由无序的键值对组成。其余几种都属于简单数据类型。注意:变量...2015-10-21
  • C#泛型类型知识讲解

    这篇文章主要介绍了C#泛型类型知识,文中代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-06-25
  • JQuery.Ajax()的data参数类型实例详解

    假如现在有这样一个表单,是添加元素用的。<form id='addForm' action='UserAdd.action' type='post'> <label for='uname'>用户名</label>:<input type='text' name='uname' id='uname'><br>...2015-11-24
  • java中String类型变量的赋值问题介绍

    下面小编就为大家带来一篇java中String类型变量的赋值问题介绍。小编觉得挺不错的。现在分享给大家,给大家一个参考。...2016-03-28
  • vue:el-input输入时限制输入的类型操作

    这篇文章主要介绍了vue:el-input输入时限制输入的类型操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-05
  • JavaScript实现数据类型的相互转换

    这篇文章主要为大家详细介绍了JavaScript实现数据类型的相互转换,感兴趣的朋友可以参考一下...2016-03-09
  • iscroll.js 用法介绍

    最新版下载: http://www.csdn123.com/uploadfile/2015/0428/20150428062734485.zip 概要 iScroll 4 这个版本完全重写了iScroll这个框架的原始代码。这个项目的产生...2016-05-19
  • C#的四种基本数据类型

    本文主要介绍了C#的四种基本数据类型的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C++中cin的用法详细

    这篇文章主要介绍了C++中cin的用法详细,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
  • C#中的try catch finally用法分析

    这篇文章主要介绍了C#中的try catch finally用法,以实例形式分析了try catch finally针对错误处理时的不同用法,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 基于PostgreSQL和mysql数据类型对比兼容

    这篇文章主要介绍了基于PostgreSQL和mysql数据类型对比兼容,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-25
  • js判断浏览器类型,版本的代码(附多个实例代码)

    在网站前端开发中,浏览器兼容性问题本已让我们手忙脚乱,Chrome的出世不知道又要给我们添多少乱子。浏览器兼容性是前端开发框架要解决的第一个问题,要解决兼容性问题就得首先准确判断出浏览器的类型及其版本。 JavaScrip...2014-05-31
  • C#与C++之间类型的对应知识点总结

    这篇文章主要介绍了C#与C++之间类型的对应知识点总结,对此有需要的朋友们可以参考下。...2020-06-25
  • R语言中的因子类型详解

    这篇文章主要介绍了R语言中的因子类型详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
  • C#引用类型和值类型的介绍与实例

    这篇文章主要介绍了C#引用类型和值类型,有需要的朋友可以参考一下...2020-06-25