PHP头条
热点:

PHP——PHP的数据类型,


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

    

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


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

【例】

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

执行结果:

                                      

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

$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;
?>

    执行结果:

        


    注意:如果给定的数值超出了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>';	//科学记数法格式的浮点数

?>

    执行结果: 

              

   

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


二.  复合数据类型

    

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

类型说明
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];

?>

执行结果:

               


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";

?>

    执行结果:

        

    说明: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 结尾的函数名的函数

函数名语法格式返回值
intvalint  intval( mixed var)返回 var 的整数值
floatfloat  floatval( mixed var)返回 var 的浮点数值
strvalstring  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 时,页面无返回。



www.phpzy.comtrue/php/25543.htmlTechArticlePHP——PHP的数据类型, PHP一共支持8种原始类型:     1.   4种标量类型     boolean(布尔型)      integer(整型)      float/double(浮点型)     string(字符串型)      2. ...

相关文章

    暂无相关文章

PHP之友评论

今天推荐