字符串类型:string
php学习之php的八种数据类型之字符串string的使用
1.整数型:int
说明:是负数、0、正数的集合、在php中存储整数为10进制、八进制、十六进制
语法:$var=整数数字;
- 八进制的写法:在数字前面加上0,就是八进制。数字的范围有0-7。
- 算法:出去开头0,各位+十位*8 +百为*8*8+千位*8*8*8….
- $num=0456; //4*8*8+5*8+6=302
- 十六进制的写法:在数字前面加上0x,数字为0-f
- 算法:出去开头0,各位+十位*16 +百为*16*16+千位*16*16*16….
- $num =0x456;//4*16*16+5*16+6=1110
- 十进制的写法:直接写数字,数字范围0-9
php最大的存储数值为:21亿。用常量PHP_INIT_MAX查询,最大存储值为2147483647,超过这个值自动转为float型
php最大的位数为14位,一个数值占多个位置,PHP_INT_SIZE
2.浮点型:float
说明:就是小数,浮点型也叫浮点数、float、双精度数double或实数real
php中的小说有两种表现形式,
- 普通的小数
- 科学计数法
浮点数的精度有限,尽管取决于系统,php通常使用ieee754双精度格式,则由于取整而导致的最大相对误差为1.11e-16。非基本数学运算可能会给出更大的误差,并且要考虑到进行复合运算时的误差传递
此外,以十进制能够精确表示的有理数如0.1或0.7,无论有多少为数都不能被内部所使用的二进制精确表示,因此不能在不丢失一点点精度的情况下转换为二进制的格式,这就会造成混乱的结果,如:floor((0.1+0.7)*10)通常会返回7而不是预期中的8,因为结果内部的表示其实是类似于7.9999999999999991118…
所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等,如果确实需要更高的精度,应该使用任意精度数学函数或者gmp函数
普通小数形式
小数末尾多个,小数点后面超过最大长度,会自动删除超出部分,最末尾会四舍五入
科学计数形式
超过14位自动转为科学计数法
3.布尔类型:boolean
说明:在php中布尔型的数据只有两个值,true和false
布尔值一般都用于返回的结果用于流程控制语句中
4.数组:array
说明:一组数据的集合
$变量=array(元素1,元素2,元素3,……);
5.对象:object
说明:世间万物皆为对象
在php中的对象是由类创建来的
//class创建一个类,调用对象 $name=null; $age=0; Class people{ //属性 var $name; var $age; //方法 function run() { echo '跑步'; } } //创建对象 $zs=new people(); $zs->name='张三'; $zs->age=23; echo $zs->name; $zs->run(); $ls= new people();
6.空:null
说明特殊的null值表示一个变量没有值,null类型唯一的值就是它本身null
在php中只能有定义变量并赋值的情况,没有只定义不赋值,这个时候就需要创建一个变量,不知道存储说明值,这个时候可以使用null来创建变量
用法:
7资源:resource
说明:就是引用php外部的内容,这个时候的类型就是资源,资源是通过专门的函数建立和使用的
8.手册中的类型:用于说明需要某种类型的数据
- mixed:一个参数可以接收多种不同的类型,如果函数需要的形参是两种以上,都会使用mixed
- number:可以是int和float
- void:作为返回类型意味着函数的返回值是无用的,void作为参数列表意味着函数不接受任何参数
9数据类型的转换
说明:在php 中数据类型是可以进行互相转换的,如整型1转换成字符串’1′
在php中分两种转换形式,:自动转换和强制转换
自动转换
给到特定写法就会改变原来的类型
强制转换
可以使用一些特殊的方式来强制型的改变类型
允许的强制转换的有:
- (int),(integer):转换为整型
- (bool),(boolean):转化为布尔类型
- (float),(double),(real):转换为浮点型
- (string):转换为字符串
- (array):转换为数组
- (object):转换为对象
- (unset):转换为null
<?php /** * @Author: admin * @Date: 2018-08-16 22:38:26 * @Last Modified by: admin * @Last Modified time: 2018-08-17 04:29:11 */// //定义一个十进制的整数的类型 $num1 = 10; $num2 = 0; $num3 = -10; echo $num1."<br>".$num2."<br>".$num3; echo "<br>"; //定义一个八进制的类型 $num1 = 000;//0 $num2 = 077774;//32764 $num3 = 05555;//2925 echo $num1."<br>".$num2."<br>".$num3; echo "<br>"; //定义一个十六进制的类型 $num1 = 0x00ff;//255 $num2 = 0xfff;//4095 $num3 = 0x00000;//0 echo $num1."<br>".$num2."<br>".$num3; echo "<br>"; //查询最大php存储数值 echo PHP_INT_MAX;//最大存储值为2147483647,超过这个值自动转为float型 //查询一个数字占多大位置 $num = 1111111111111111;//超过14位后自动转为科学计数法 var_dump($num); echo PHP_INT_SIZE;//4 $num = 11111111111;//超过int的取值范围后自动转为float型 var_dump($num); $num = 1111111111;//没超过int的取值范围是int型 var_dump($num); //小数浮点型 $num1=1.1; $num2=0.0; //小数末尾多个,小数点后面超过最大长度,会自动删除超出部分,最末尾会四舍五入 $num3=1.00000000000000000000000000; var_dump($num3); $num3=9.99999999999999999999999999; var_dump($num3); $num3=5.55555555555555555555555555; var_dump($num3); $num3=4.44444444444444444444444444; var_dump($num3); //科学计数 $num=1111111111111111.1;//超过14位自动转为科学计数法 var_dump($num); $num=1111111111111.1;//没超过14位 var_dump($num); //不精准体现 $num=floor((0.1+0.7)*10);//floor强制转化成浮点型 var_dump($num);//结果为7二不是8 //bool类型 $true=true; var_dump($true); //一般布尔类型会用在控制语句中 if ($num==1) { echo '真'; } else { echo '假'; } echo "<hr>"; //class创建一个类,调用对象 $name=null; $age=0; Class people{ //属性 var $name; var $age; //方法 function run() { echo '跑步'; } } //创建对象 $zs=new people(); $zs->name='张三'; $zs->age=23; echo $zs->name; $zs->run(); //null类型 $a=null; $b='';//空字符串 if (empty($b)) { echo '空'; } else { echo $b; } //给函数的形参加默认值 function FunctionName($value='',$b=null) { } FunctionName(); //资源resource 连接数据库 $link= @mysql_connect('127.0.0.1','root','root'); var_dump($link); //自动转换 $a=1; $b=2; $v=$a.$b;//转换为字符串 var_dump($v); if ($a) {//自动转换为boolean类型 echo '真'; } //强制转换 $num=1; var_dump((string)$num);//强制转换为字符串 $str='123'; var_dump((int)$str);//强制转换为整数
1234