首页 > 编程 > PHP > 正文

php之数据类型

2020-03-22 16:21:41
字体:
来源:转载
供稿:网友
  • php数据类型划分:
    基本类型: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

    <?phpheader('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 ~ 2147483647echo 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

    注意:浮点数因为存储的问题,计算机是无法完全精确表达所有小数的,浮点数不能随便进行大小比较。

    <?phpheader('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

    <?phpheader('content-type:text/html;charset=utf-8');$name = 'tom';//单引号字符串//单引号和反斜杠要转义,其他都按原样输出,不会解析字符串里面的变量$s1 = ' '   单引号要转义<br>         '     双引号直接写 <br>         $name 直接原样输出<br>         / 反斜杠要转义<br> ';echo $s1;echo '<hr>';//双引号字符串$s2 = '' 单引号直接写<br>       / 反斜杠<br>       	  起作用<br>       ' 双引号要转义<br>       $name 会被解析<br>       {$name}  <br>       a 这里输出字母a  141的十进制是97是字母a的 ascii码<br>       a 这里输出字母a  x61的十进制是97是字母a的 ascii码<br>';echo $s2;echo '<hr>';//nowdoc 单引号定界符字符串 没有可以用的转义符$s3 = <<<'STR'这里写内容,写什么就是什么<br /> /  	  <br />'  ' 单引号和双引号直接写就行<br />$美元符号也直接写<br />$name 按照原样输出<br />STR;echo '<p>'.$s3.'</p>';echo '<hr>';//heredoc 双引号字符串界定符$s4 = <<<STR' 单引号直接写<br />' 双引号也直接写<br />' 输出' <br /> 换行符是可以的<br />	 制表符也行  <br />$say 这样写  $  要转义<br />$name  变量会被解析<br />a 输出字母a<br />a 输出字母aSTR;echo '<p>'.$s4.'</p>';//注意heredoc 和 newdoc 写法//1 开始标识符和结束标识符号必须一致//2 结束标识符必须顶格书写后面加个分号独占一行

    这里写图片描述
    这里写图片描述
    输出结果:
    这里写图片描述

    4.布尔类型 boolean

    0 “0” 0.0 空数组 未定义变量 false 都为false
    “0.0” 也为真 其他都为真
    这里写图片描述

    <?phpheader('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

    数组就是一个集合体,里面能放不同类型的元素。数组的下标可以是数字类型或者字符串类型。

    <?phpheader('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
    <?phpheader('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

    PHP编程

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表