欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PHP——PHP的数据类型

程序员文章站 2022-07-08 13:21:34
...

PHP一共支持8种原始类型:

    1.   4种标量类型

  •     boolean(布尔型) 
  •     integer(整型) 
  •     float/double(浮点型)
  •     string(字符串型)

    2.     两种复合类型

  •     array(数组)
  •     object(对象)

  3.    两种特殊类型

  •     resource(资源)
  •     NULL。 

    【注】 PHP  中变量的类型通常不是由程序员设定的,确切的说,是  PHP 根据该变量使用的上下文在运行时决定的。

一.   标量数据类型

标量数据类型
类型 说明
boolean(布尔型) 只有两个值,真(true)和假(false) 
string(字符串型) 字符串就是连续的字符序列,可以是计算机所能表示的一切字符的集合
integer(整型) 整型数据类型只能包含整数。这些数据类型可以是正数或负数 
float(浮点型) 浮点数据类型用于存储数字,和整型不同的是它有小数位 

1.  布尔型(boolean)

    保存一个  true  值或者  false  值,其中  true  和  false  是  PHP  的内部关键字。设定一个布尔型的变量,只需将  true  或者false  赋值给变量即可。

    在  PHP  中不是只有  false  值才为假的,在一些特殊情况下  boolean  值也被认为是  false 。这些特殊情况为:0、0.0、“0”、空白字符串(“”)、只声明没有赋值的数组等。

    【注】美元符号 $ 是变量的标识符,所有变量都是以 $ 符开头的,无论是声明变量还是调用变量,都应使用 $ 符。

【例】

<?php
	$b = 0;
	if($b == true)
		echo "<font color='pink' size='+1' >变量为真</font> ";
	else
		echo "<font color='red'  > 变量为假</font>";
?>


2.  字符串型(string)

    字符串是连续的字符序列,由数字、字母和符号组成。字符串中的每个字符只占用一个字节。

    在 PHP 中,有3种定义字符串的方式,分别是单引号(')、双引号(")和界定符(<<<)。

    单引号和双引号是经常被使用的定义方式,定义格式如下:

    <?php             $a =‘字符串’;           ?>      

    或

    <?php            $a ="字符串";             ?>

单引号与双引号的区别:

(1)两者的不同之处在于,双引号中所包含的变量会自动被替换成实际数值,而单引号中包含的变量则按普通字符串输出。

(2)对转义字符的使用。使用单引号时,只要对单引号 “ ' ”进行转义即可,但使用双引号(")时,还要注意“ " ” 、“$”等字符的使用。这些特殊字符都要通过转义符“\”来显示。常用的转义字符如下表所示。  

    PHP——PHP的数据类型

    \n  和  \r  在  Windows  系统中没有什么区别,都可以当作回车符。但在  Linux  系统中则是两种效果,在  Linux 中,\n 表示换到下一行,却不会回到行首;而 \r 表示光标回到行首,但仍然在本行。


注意:如果对非转义字符使用了“\”,那么在输出时,“\”也会跟着一起被输出。

【例】

<?php
	$b = "红尘中你的无上清凉,寂静光明默默照耀世界";
	echo " <h3>$b</h3>";
	echo '<h4>$b</h4>';
	
?>

执行结果:

                                      PHP——PHP的数据类型

    界定符(<<<)在使用时后接一个标识符,然后是字符串,最后是同样的标识符结束字符串。界定符的格式如下:

$string = <<< str
要输出的字符串

str

其中  str  为指定的标识符。

注意:结束标识符必须单独另起一行,并且不允许有空格。在标识符前后有其他符号或字符,也会发生错误。

    【例】 下面使用界定符输出变量中的值,可以看到,它和双引号没什么区别,包含的变量也被替换成实际数值。
<?php
	$b = "红尘中你的无上清凉,寂静光明默默照耀世界;";
	echo 	$string = <<<str
	<h3>\$b 的内容是:  $b<br> 
	行如风,如君一骑绝尘,空谷绝响,至今谁在倾听;</h3>
str;
		
?>


3.整型(integer)

    整型数据类型只能包含整数。在  32  位的操作系统中,有效的范围是  -2147483648~+2147483647。整型数可以用十进

制、八进制和十六进制来表示。

    如果用八进制,数字前面必须加 0;如果用十六进制,则需要加 0x。

    注意:如果在八进制中出现了非法数字(8和9),则后面的数字会被忽略掉 。


【例3.4】 分别输出八进制、十进制和十六进制的结果。

<?php
	$a = 1234567890;    //声明一个十进制的整数
	$b = 0x1234567890;   //声明一个十六进制的整数
	$c = o1234567890;    //声明一个八进制的整数
	$d = 01234567;       //声明另一个八进制整数
	echo '数字1234567890不同进制的输出结果:<p>';
	echo '10进制的结果是:'.$a.'<br>';					//输出10进制整数
	echo '16进制的结果是:'.$b.'<br>';		    		//输出16进制整数
	echo '8进制的结果是:<p>';
if($c == $d){									//判断$str3 和$str4的关系
		echo 'c = d = '.$c;					//如果相等,输出变量值
	}
	else{
		echo 'c != d <br>';						//如果不相等,输出“$str3 != $str4”
	}   
	echo 'c 的结果是:'.$c.'<br>';
	echo 'd 的结果是:' .$d;
?>

    执行结果:

        PHP——PHP的数据类型


    注意:如果给定的数值超出了int型所能表示的最大范围,将会被当作float型处理,这种情况称为整数溢出。同样,如果表达式的最后运算结果超出了int型的范围,也会返回float型。


4.浮点型(float)

    浮点数据类型可以用来存储整数,也可以保存小数。它提供的精度比整数大得多。在32位的操作系统中,有效的范围是1.7E-308~1.7E+308。在PHP 4.0以前的版本中,浮点型的标识为double,也叫做双精度浮点数,两者没有区别。

    浮点型数据默认有两种书写格式,一种是标准格式:
            3.1415
            -35.8
    还有一种是科学记数法格式:
            3.58E1
            849.72E-3


【例】 输出圆周率的近似值。用3种书写方法:圆周率函数、传统书写格式和科学记数法,最后显示在页面上的效果都一样。

<?php
echo '圆周率的3种书写方法:<p>';
echo '第一种:pi() = '. pi() .'<p>';							//调用pi函数输出圆周率
echo '第二种:3.14159265359 = '. 3.14159265359 .'<p>';			//传统书写格式的浮点数
echo '第三种: 314159265359E-11 = '. 314159265359E-11 .'<p>';	//科学记数法格式的浮点数

?>

    执行结果: 

              PHP——PHP的数据类型

   

    注意:浮点型的数值只是一个近似值,所以要尽量避免浮点型数值之间比较大小,因为最后的结果往往是不准确的。


二.  复合数据类型

    

复合数据类型包括两种,即数组和对象。

类型 说明
array(数组)  一组类型相同的变量的集合
object(对象) 对象是类的实例,使用  new  命令来创建

1.数组(array)

    数组是一组数据的集合,它把一系列数据组织起来,形成一个可操作的整体。数组中可以包括很多数据,如标量数据、数组、对象、资源以及  PHP  中支持的其他语法结构等。

    数组中的每个数据称为一个元素,元素包括索引(键名)和值两个部分。元素的索引可以由数字或字符串组成,元素的值可以是多种数据类型。

定义数组的语法格式如下:

$array = ('value1',' value2 '……)

$array[key] = 'value'

$array = array(key1 => value1, key2 => value2……)

    

    其中,参数 key 是数组元素的下标,value  是数组下标所对应的元素。以下几种都是正确的格式:

    $arr1 = array('This','is','a','example');
    $arr2 = array(0 => 'php', 1=>'is', 'the' => 'the', 'str' => 'best ');
    $arr3[0] = 'tmpname';

    

声明数组后,数组中的元素个数还可以*更改。只要给数组赋值,数组就会自动增加长度。

<?php
	$arr = array(0 => 1,1=>2, 'hi' => 'hello');
	$arr[2]='zth';
	echo $arr[0]."<br>";
	echo $arr['hi'].":  ".$arr[2];

?>

执行结果:

               PHP——PHP的数据类型


2.对象(object)

    编程语言所应用到的方法有两种:面向过程和面向对象。在  PHP  中,用户可以*使用这两种方法。 


三.  特殊数据类型

    特殊数据类型包括资源和空值两种。

类型 说明
resource(资源) 资源是一种特殊变量,又叫做句柄,保存到外部资源的一个引用。资源是通过专门的函数来建立和使用的 
null(空值) 特殊的值,表示变量没有值,唯一的值就是null 
    在使用资源时,系统会自动启用垃圾回收机制,释放不再使用的资源,避免内存消耗殆尽。因此,资源很少需要手工释放。

2.空值(null)

    空值,表示没有为该变量设置任何值,另外,空值(null)不区分大小写,null  和  NULL  效果是一样的。

    被赋予空值的情况有以下3种:还没有赋任何值、被赋值  null、被  unset()  函数处理过的变量。

【例】 下面来看一个具体实例。字符串  string1  被赋值为  null,string2  根本没有声明和赋值,所以也输出  null,最后的string3  虽然被赋予了初值,但被  unset()  函数处理后,也变为  null  型。unset()  函数的作用就是从内存中删除变量。

<?php
echo "变量(\$string1)直接赋值为null:";
$string1 = null;									//变量$string1被赋空值
$string3 = "str";									//变量$string3被赋值str
if(!isset($string1))								//判断$string1是否被设置
	echo "string1 = null";
echo "<p>变量(\$string2)未被赋值:";
if(!isset($string2))								//判断$string2 是否被设置
	echo "string2 = null";
echo "<p>被unset()函数处理过的变量(\$string3):";	
unset($string3);									//释放$string3
if(!isset($string3))								//判断$string3是否被设置
	echo "string3 = null";

?>

    执行结果:

        PHP——PHP的数据类型

    说明:is_null()  函数是判断变量是否为  null,该函数返回一个  boolean  型,如果变量为  null,则返回  true,否则返回false。unset()  函数用来销毁指定的变量。从  PHP 4  开始,unset()  函数就不再有返回值,所以不要试图获取或输出 unset()。

 

四.   数据类型转换

1.  自动转换

   数据类型的自动转换是指在定义常量或变量时,不需要指定常量或变量的数据类型,在代码执行过程中,  PHP 会根据需要将常量或变量转换为合适的数据类型,但是在转换时也要遵循一定的规则。
  •     布尔型数据和数值型数据在进行算术运算时,TRUE  被转换为整数1,FALSE  被转换为整数 0。
  •     字符串型数据和数值型数据在进行算术运算时,如果字符串以数字开头,将被转换为相应的数字;如果字符串不是以数字开头,将被转换为整数0。
  •     在进行字符串连接运算时,整数、浮点数将被转换为字符串型数据,布尔值  TRUE  将被转换为字符串"1",布尔值  FALSE  和  NULL 将被转换为空字符串  ""。
  •     在进行逻辑运算时,整数0、浮点数0.0、  空字符串""、字符串"0"、NULL 以及空数组将被转换为布尔值  FALSE,  其他数据将被转换为布尔值TRUE。

【例】
<?php
	$a = true;
	$b = false;
	$c = "100abc";
	$d = "abc100";
	$e = 100;
	var_dump($a + $e);
	echo "<br>";
	var_dump($b + $e);
	echo  "<br>";
	var_dump($c+$e);
	echo "<br>";
	var_dump($d+$e);
	echo "<br>";
	var_dump($a.$e);
	echo "<br>";
	var_dump($b.$e);
	echo "<br>";
	var_dump($a  &&  $e);
	echo "<br>";
	var_dump($b  &&  $e);
	echo "<br>";
?>

执行结果:

E:\wamp64\www\mr\zth\test.php:27:int 101

E:\wamp64\www\mr\zth\test.php:29:int 100

E:\wamp64\www\mr\zth\test.php:31:int 200

E:\wamp64\www\mr\zth\test.php:33:int 100

E:\wamp64\www\mr\zth\test.php:35:string '1100' (length=4)

E:\wamp64\www\mr\zth\test.php:37:string '100' (length=3)

E:\wamp64\www\mr\zth\test.php:39:boolean true

E:\wamp64\www\mr\zth\test.php:41:boolean false

2.   强制转换

    a.  用括号括起来的类型名称进行转换

强制类型转换
转换操作符 转换类型 举例
(boolean)  转换成布尔型  (boolean)$num、(boolean)$str 
(string)  转换成字符型 (string)$boo、(string)$flo
(integer)  转换成整型  (integer)$boo、(integer)$str
(float)  转换成浮点型 (float)$str、(float)$str 
(array) 转换成数组  (array)$str 
(object)  转换成对象  (object)$str 

    注意:在进行类型转换的过程中应该注意以下内容:

    转换成  boolean  型时,null、0  和未赋值的变量或数组会被转换为false,其他的为真;

    转换成整型时,布尔型的  false  转换为  0,true  转换为  1,浮点型的小数部分被舍去,字符型如果以数字开头就截取到非数字位,否则输出0。

    【例】

<?php
	$str = "HELLO WORLD ";
	echo "原始的 string 形式:".$str;
	echo "<p>";
	echo "这是boolean形式: ".(boolean)$str;
	echo "<p>";
	echo "这是integer形式: ".(integer)$str;
	echo "<p>";
	echo "这是float形式: ".(float)$str;
?>

    执行结果:

原始的 string 形式:HELLO WORLD
这是boolean形式: 1

这是integer形式: 0

这是float形式: 0

    b.  使用以 val 结尾的函数名的函数

函数名 语法格式 返回值
intval int  intval( mixed var) 返回 var 的整数值
float float  floatval( mixed var) 返回 var 的浮点数值
strval string  strval( mixed var) 返回 var 的字符串值
【例】
<?php
	$str = "123.456abc";
	var_dump(intval($str));
	echo "<br>";
	var_dump(floatval($str));
	echo "<br>";
	var_dump(strval($str));
	echo "<br>";
?>

    执行结果:

E:\wamp64\www\mr\zth\test.php:23:int 123

E:\wamp64\www\mr\zth\test.php:25:float 123.456

E:\wamp64\www\mr\zth\test.php:27:string '123.456abc' (length=10)

c.  使用  settype()  函数

    语法格式:

    bool settype ( mixed var, string type )

    参数  var  为指定的变量,参数  type  为指定的类型,参数 type 有7个可选值,即 boolean、float、integer、array、null、object  和  string 。如果转换成功则返回  true,否则返回 false。 

    当字符串转换为整型或浮点型时,如果字符串是以数字开头的,就会先把数字部分转换为整型,再舍去后面的字符串;如果
数字中含有小数点,则会取到小数点前一位

【例】

<?php
	$str = "123.456abc";
	$int = 100;
	$boo = true;
	settype($str,"integer");
	var_dump($str);
	echo "<br>";
	settype($int,"boolean");
	var_dump($int);
	echo "<br>";
	settype($boo,"string");
	var_dump($boo);
	
?>

    执行结果:

E:\wamp64\www\mr\zth\test.php:26:int 123

E:\wamp64\www\mr\zth\test.php:29:boolean true

E:\wamp64\www\mr\zth\test.php:32:string '1' (length=1)

五.   检测数据类型

      PHP内置了检测数据类型的系列函数,可以对不同类型的数据进行检测,判断其是否属于

某个类型,如果符合则返回true,否则返回false。


函数 检测类型 举例
is_bool  检查变量是否是布尔类型  is_bool(true)、is_book(false) 
is_string  检查变量是否是字符串类型  is_string('string')、is_string(1234)
is_float/is_double  检查变量是否为浮点类型  is_float(3.1415)、is_float('3.1415)) 
is_integer/is_int  检查变量是否为整数  is_integer(34)、is_integer('34') 
is_null  检查变量是否为null  is_null(null) 
is_array  检查变量是否为数组类型  is_array($arr) 
is_object  检查变量是否是一个对象类型  is_object($obj) 
is_numeric  检查变量是否为数字或由数字组成的字符串 is_numeric('5')、is_numeric('bccd110') 

    【例】

<?php
	$a = true;
	$b = "Hello World ";
	$c = 123456;
	echo "变量 a 是否为布尔型: ".is_bool($a)."<br>";
	echo "变量 b 是否为字符串型: ".is_string($b)."<br>";
	echo "变量 c 是否为整型: ".is_int($c)."<br>";
	echo "变量 c 是否为f浮点型: ".is_float($c)."<br>";
?>

    执行结果:

变量 a 是否为布尔型: 1
变量 b 是否为字符串型: 1
变量 c 是否为整型: 1
变量 c 是否为f浮点型: 
    【注】结果为 true 时,页面返回 1。结果为 false 时,页面无返回。