PHP_数据类型

概览

PHP支持8种原始类型,包括4种标量类型,即boolean(布尔型)、integer(整型)、float/double(浮点型)和string(字符串型);
2种复合类型,即array(数组)和object(对象);
2种特殊类型,即resource(资源)与null。

标量

标量数据类型是数据结构中最基本的单元,只能存储一个数据。

布尔型(boolean)

布尔型是PHP中较为常用的数据类型之一,它保存一个true值(1)或者false值(0),其中true和false是PHP的内部关键字。主要用来判断真假,例如:

<?php
	$bool = true;
	if($bool == true)
		echo '变量$bool为真(true)';
	else
		echo '变量$bool为假(flase)';

?>

整形(integer)

整型数据类型只能包含整数。
32位,64位无符号整型的取值范围:
2^64-1 = +18446744073709551615 ~ -18446744073709551615
2^32-1 = +4294967295 ~ -4294967295
32位,64位有符号整型取值范围:
(2^32)/2-1 = +2147483647 ~ -2147483647
(2^64)/2-1 = +9223372036854775807 ~ -9223372036854775807
减1是因为整型包括0.
整型数可以用十进制、八进制和十六进制来表示。如果用八进制,数字前面必须加0;如果用十六进制,则需要加0x。例如:

<?php
	echo "<p>1234567在不同进制下的输出结果</p>";
	$str1=1234567;	//十进制
	$str2=0x1234567;	//十六进制
	$str3=01234567;	//八进制
	echo "<p>1234567十进制输出为:$str1</p>";
	echo "<p>1234567十六进制输出为:$str2</p>";
	echo "<p>1234567八进制输出为:$str3</p>";
//整形取值超过最大范围,就会造成溢出,返回一个浮点数。同样的运算结果如果超过最大范围,也会返回一个浮点数,会造成数据失准,例如:
	$str4=9223372036854775807;	//这是64位的最大值了
	echo "<p>整形十进制最大值是:$str4</p>";
	++$str4;	//就大一点试试
	echo "<p>整形十进制最大值加1是:$str4</p>";
	$str5=9223372036854775809;	//大两点试试
	echo "<p>整形十进制最大值大2是:$str5</p>";
	if($str4 == $str5)	//判断9223372036854775809和9223372036854775808是否相等
		echo "哦噢!相等,看来大了返回的值不准哦!";
	else
		echo "这不可能!!!";
	
?>

浮点型(float/double)

浮点数据类型可以用来存储数字,也可以保存小数。它提供的精度比整数大得多。
在64位的操作系统中,有效的范围是1.7E-308~1.7E+308。
在PHP早期版本中,浮点型的标识为double,也叫作双精度浮点数,两者没有区别。例如圆周率的三种写法:

<?php
	echo "pi()函数的写法:".pi()."</p>";
	echo "正常写法:". 3.1415926535898 ."</p>";
	echo "科学计数法:". 31415926535898E-13 ."</p>"
?>

字符串(string)

字符串是连续的字符序列,由数字、字母和符号组成。字符串中的每个字符只占用一个字节。在PHP中,有3种定义字符串的方式,分别是单引号(')、双引号(")和定界符(<<<)。

单引号中包含的变量会强制转换成字符串输出。例如:

<?php
	$bool = true;
	echo '$bool 是布尔类型true的值';
?>

双引号中所包含的变量会自动被替换成实际数值

<?php
	$bool = true;
	echo "<h2>$bool 是布尔类型true的值</h2>"
?>

定界符(<<<)是从PHP 4开始支持的。其本质和双引号没有区别,在使用时后接一个标识符,然后是字符串,最后是同样的标识符结束字符串。例如:

<?php
	$bool = true;
	echo <<<std
	$bool 是布尔类型true的值',<h1>其本质和双引号没有区别</h1>
	。。。。
	std;
?>

复合类型

数组(array)

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

<?php
	$array = array('张三','李四','王五');  //张三就是键值,0就是索引
	echo "数组中第一个值是:$array[0]</p>";
	echo "数组中第二个值是:$array[1]</p>";
	echo "数组中第三个值是:$array[2]</p>";
?>

对象(object)

  • 类:具有相同属性(状态)和方法(行为)的对象称为类,是个抽象的概念。例如:人类,兽类、鱼类
  • 对象:在其他编程语言中常说万物皆对象,就是此对象。日常生活中的实体的东西都是对象,是类的实例化。例如:谢广坤就是人类的实例,哈士奇就是狗类的实例
  • 属性:用来描述具体某个对象的特征就是属性,是静态的。例如:年龄,姓名,身高等
  • 方法:每个对象有它们自己的行为或者是使用它们的方法,是动态的。可以使用这些方法来操作一个对象;例如:唱歌、跳舞,跑步等
<?php
class people 	//创建一个类
{
	var $name;	//属性
	var $age;	//属性
    function action()
    {
        echo "我叫: ".$this->name." "; 				//具体的行为
		echo "我是练习时长 ".$this->age." 的练习生</p>";	//具体的行为
		return $this;	//返回此对象以便多次调用
	}
	function hh()
	{
		echo "我喜欢唱跳rap";
	}
}

	$bro = new people;	//将类实例化为对象
	$bro->name='谢广坤';	//给people对象的name属性赋值
	$bro->age='两年半';	//给people对象的age属性赋值
	$bro->action()->hh();	//调用两种方法
?>

特殊类型

资源(source)

资源是一种特殊的变量类型,也叫句柄,保存了到外部资源的一个引用,例如:mysql连接、文件句柄,图形画布区域等
资源是通过专门的函数来建立和使用的。

<?php
    $fp = fopen("test.txt", "r");   //读取文件
	var_dump($fp);  //var_dump打印资源变量
	fclose($fp);  //关闭文件
?>

空(null)

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

<?php
	$str=null;
	echo "str的值是: $str";
?>

原文地址:https://www.cnblogs.com/hxlinux/p/14746782.html