php之数据类型
2016-04-02 23:20
501 查看
php数据类型划分:
基本类型:int , float, string, boolean
复合类型:数组, 对象
其他类型:null resource
0 1 2 3 4 5 6 7 8 9 逢十进一
如: $dec =123;
八进制
0 1 2 3 4 5 6 7 逢八进一
如:$oct = 065; //以0开始
十六进制
0 1 2 3 4 5 6 7 8 9 A B C D E F 逢十六进一
如:$hex = 0xA8;
手工计算:数值除2取余数,从尾到头取余数
手工计算:数值除8取余数,从尾到头取余数
手工计算:数值除16取余数,从尾到头取余数
x进制和十进制的计算公式:
x^0 * 数值 + x^1 * 数值 +x^2 * 数值 + … + x^n * 数值
如:
二进制:1101 转十进制
2^0 * 1+ 2^1* 0+2^2 * 1+2^3 * 1 = 13
1.单引号字符串
2.双引号字符串
3.单引号界定符字符串 newdoc
4.双引号定界符字符串 heredoc
输出结果:
“0.0” 也为真 其他都为真
比如: 文件 数据库 图片
$a =null;
var_dump($a);// NULL
基本类型:int , float, string, boolean
复合类型:数组, 对象
其他类型:null resource
1.整数类型
1.1表现形式
十进制0 1 2 3 4 5 6 7 8 9 逢十进一
如: $dec =123;
八进制
0 1 2 3 4 5 6 7 逢八进一
如:$oct = 065; //以0开始
十六进制
0 1 2 3 4 5 6 7 8 9 A B C D E F 逢十六进一
如:$hex = 0xA8;
1.2 进制转换
1.2.1 十进制转二进制
使用函数 : decbin(数值);手工计算:数值除2取余数,从尾到头取余数
1.2.2 十进制转八进制
使用函数 : decoct(数值);手工计算:数值除8取余数,从尾到头取余数
1.2.3 十进制转十六进制
使用函数 : dechex(数值);手工计算:数值除16取余数,从尾到头取余数
1.2.4 二进制转十进制
使用函数:bindec(二进制的字符串)1.2.5 八进制转十进制
使用函数:octdec(八进制的字符串)1.2.6 十六进制转十进制
使用函数:hexdec(十六进制的字符串)x进制和十进制的计算公式:
x^0 * 数值 + x^1 * 数值 +x^2 * 数值 + … + x^n * 数值
如:
二进制:1101 转十进制
2^0 * 1+ 2^1* 0+2^2 * 1+2^3 * 1 = 13
<?php header("content-type:text/html;charset=utf-8"); //十进制 $dec = 85; //八进制 $oct = 065; //十六进制 $hex =0xA8; echo '$dec='.$dec.'<br>'; echo '$oct='.$oct.'<br>'; echo '$hex='.$hex.'<br>'; //十进制转二进制,结果是string类型 $v1 = decbin($dec); echo '85十进制转二进制:'.$v1.' 类型:'.getType($v1).'<br>'; //十进制转八进制,结果是string类型 $v2 = decoct($dec); echo '85十进制转八进制:'.$v2.' 类型:'.getType($v2).'<br>'; //十进制转十六进制,结果是string类型 $v3 = dechex($dec); echo '85十进制转十六进制:'.$v3.' 类型:'.getType($v3).'<br>'; //二进制转十进制 $v4 = bindec("1101"); echo '1101二进制转十进制:'.$v4.' 类型:'.getType($v4).'<br>'; //八进制进制转十进制 $v5 = octdec("065"); echo '065八进制转十进制:'.$v5.' 类型:'.getType($v5).'<br>'; //0xA5十六制转十进制 $v6 = hexdec("0xA5"); echo '0xA5十六制转十进制:'.$v6.' 类型:'.getType($v6).'<br>';
1.2.7整数范围
//整数范围 : -2147483647 ~ 2147483647 echo PHP_INT_MAX; //2147483647 ---最大整数 echo '<br>'; $i = PHP_INT_MAX + 1; //整数运算的结果超出整数的范围后,会自动转换为浮点数 echo $i." 类型:".getType($i).'<br>';//2147483648 类型:double $min = -2147483647; echo $min." 类型:".getType($min).'<br>'; //-2147483647 类型:integer --最小整数
2.浮点数 float double real
注意:浮点数因为存储的问题,计算机是无法完全精确表达所有小数的,浮点数不能随便进行大小比较。<?php header("content-type:text/html;charset=utf-8"); //有小数点的 $f1 = 1.23; //带E的就是浮点数 $f2 = 1.234E3; $f3 = 123E3; echo $f1." f1类型".getType($f1).'<br>'; echo $f2." f2类型".getType($f2).'<br>'; echo $f3." f3类型".getType($f3).'<br>'; //计算机中浮点数因为存储的问题,是无法完全精确表达所有小数的 $f4 = 8.1 / 3; //这里输出2.7 ,真的是2.7吗?其实是输出时系统给了一个很接近的值而已! echo "f4 = $f4".'<br>'; if($f4 < 2.7) //这个条件为真 { echo "\$f4 < 2.7";//输出 $f4 < 2.7 } echo '<br>'; //所以浮点数不要直接用来比较大小,我们应该根据实际场景需要的精度进行比较 //比较方式一:乘以10^精度位数 再四舍五入取整 if(round($f4 * 10000) == round(2.7 * 10000)) { echo 'f4 == 2.7'.'<br>'; } //比较方式二:跟一个精度小数比较 if(abs($f4 - 2.7) < 0.0001 ) { echo 'f4 == 2.7'.'<br>'; }
3.字符串string
字符串有四种形式:1.单引号字符串
2.双引号字符串
3.单引号界定符字符串 newdoc
4.双引号定界符字符串 heredoc
<?php header("content-type:text/html;charset=utf-8"); $name = "tom"; //单引号字符串 //单引号和反斜杠要转义,其他都按原样输出,不会解析字符串里面的变量 $s1 = ' \' 单引号要转义<br> " 双引号直接写 <br> $name 直接原样输出<br> \\ 反斜杠要转义<br> '; echo $s1; echo '<hr>'; //双引号字符串 $s2 = "' 单引号直接写<br> \\ 反斜杠<br> \t \n 起作用<br> \" 双引号要转义<br> $name 会被解析<br> {$name} <br> \141 这里输出字母a 141的十进制是97是字母a的 ascii码<br> \x61 这里输出字母a x61的十进制是97是字母a的 ascii码<br>"; echo $s2; echo '<hr>'; //nowdoc 单引号定界符字符串 没有可以用的转义符 $s3 = <<<'STR' 这里写内容,写什么就是什么<br /> \n \\ \t <br /> ' " 单引号和双引号直接写就行<br /> $美元符号也直接写<br /> $name 按照原样输出<br /> STR; echo '<p>'.$s3.'</p>'; echo '<hr>'; //heredoc 双引号字符串界定符 $s4 = <<<STR ' 单引号直接写<br /> " 双引号也直接写<br /> \" 输出\" <br /> \n 换行符是可以的<br /> \t 制表符也行 <br /> \$say 这样写 $ 要转义<br /> $name 变量会被解析<br /> \141 输出字母a<br /> \x61 输出字母a STR; echo '<p>'.$s4.'</p>'; //注意heredoc 和 newdoc 写法 //1 开始标识符和结束标识符号必须一致 //2 结束标识符必须顶格书写后面加个分号独占一行
输出结果:
4.布尔类型 boolean
0 “0” 0.0 空数组 未定义变量 false 都为false“0.0” 也为真 其他都为真
<?php header("content-type:text/html;charset=utf-8"); //布尔型只有两种状态的值: true 和 false //在实际代码中我们常常将一个数据(可能是各种类型)当作一个布尔值来判断 $b1 = 5; if(100){ echo '100 <hr>'; } if($b1){ echo '$b1 <hr>'; } $array = array(); if(!$array) echo '$array空数组为false <hr>'; $array2 = array(1,2); var_dump($array2); if($array2) echo '$array2 数组为true<hr>'; // 0 "0" 0.0 空数组 未定义变量 false 都为false $b2 = false ; $b3 = "false"; if(!$b2) echo '$b2为false <hr>'; if($b3) echo '$b3 为true <hr>'; $b4 = "0"; //注意 "0.0"为真 "0" 为假 if(!$b4) echo '$b4 为false <hr>'; $b5; if(!$b5) echo '未定义变量为false'; //Notice: Undefined variable: b5
5数组类型 array
数组就是一个集合体,里面能放不同类型的元素。数组的下标可以是数字类型或者字符串类型。<?php header("content-type:text/html;charset=utf-8"); $arr1 = array(1,"hello",true,5.88,); echo "<pre>"; var_dump($arr1); echo "</pre>"; echo '<hr>'; //foreach 遍历数组 foreach($arr1 as $key => $value){ echo "key = $key"." value = $value ".getType($value).'<br>'; } echo '<hr>'; //for循环遍历数组 for($i =0, $len = count($arr1) ; $i < $len ; $i++){ echo $arr1[$i].'<br>'; } echo '<hr>'; $arr2 = array(); $arr2[3] = 100; //数组下标可以是数字 for($i = 0 ;$i < 5 ; $i++){ $arr2[] = $i;//这里下标是从4开始了 } echo "<pre>"; var_dump($arr2); echo "</pre>"; echo '<hr>'; $arr3 = array(); //数组下标可以是字符串 for($i = 0 ;$i < 5 ; $i++){ $arr3["key".$i] = $i; } echo "<pre>"; var_dump($arr3); echo "</pre>"; echo '<hr>'; //定义了一个嵌套数组 $arr4 = array( "name" => "tom", "age" => 20, "height" =>175.5, "married"=> true, 0 => "OK", "family" => array( "father" => "jack", "mother" => "marry", ), ); echo "<pre>"; var_dump($arr4); echo "</pre>";
6.对象 object
<?php header("content-type:text/html;charset=utf-8"); class Person { public $name = "tom";//成员变量name public $age = 18; //成员方法 public function showMe() { echo '名字:' . $this -> name . ' 年龄:' . $this -> age; } } //Person类实例化一个对象 $person = new Person(); //object(Person)#1 (2) { ["name"]=> string(3) "tom" ["age"]=> int(18) } var_dump($person); $person->name = "jack"; $person->age = 20; //调用person对象的方法 $person->showMe(); //名字:jack 年龄:20
7.资源 resource
资源是对外部数据的引用,php通过引用来进行操作。比如: 文件 数据库 图片
8. null
没有存数数据,不存在有实际意义的数据。$a =null;
var_dump($a);// NULL
相关文章推荐
- 每天laravel-20160627|TaggableStore
- 每天laravel-20160627|TaggableStore
- 每天laravel-20160626|RetrievesMultipleKeys
- 每天laravel-20160626|RetrievesMultipleKeys
- 11 Session和数据保持
- thinkphp3.2.3版本模板引擎会把反斜杠\过滤掉的解决办法
- thinkphp3.2.3笔记-验证码
- PHPStorm汉化
- PHPStorm安装与破解
- PHP mysql_real_escape_string() 函数防SQL注入
- php获取复选框的值CheckBox的多个值
- PHP之创建图像验证码 ---实例
- Yii 框架学习--01 框架入门
- PHP之创建图像验证码
- thinPHP中多维数组的遍历
- PHP程序,将csv转成sql文件并导入数据库
- THINKPHP学习
- 浅析ltp测试流程
- 痛苦的vsftpd配置
- Ubuntu搭建FTP(vsftpd)文件服务器