PHP基础之数据类型

PHP数据类型

  • 概念

    • PHP是弱类型
  • 标量类型

    • 布尔型 boolean
    • 整型 integer
    • 浮点型 float
    • 字符串型 string
  • 复合类型

    • 数组 array
    • 对象 object
  • 特殊类型

    • 资源 resource
    • 空值 NULL

整型

  • 概念
    • 存整数,PHP_INT_MAX获取整形最大值
    • PHP支持8、10、16机制的整数
<?php
    $num1=10;		//十进制
    $num2=010;		//八进制(数字前面加0)
    $num3=0x10;		//十六进制(数字前面加0x)

    echo $num1,'<br>';		//10
    echo $num2,'<br>';		//8
    echo $num3;				//16
?>
  • PHP提供了进制转换函数
    • 十进制(decimalist) dec
    • 二进制(binary) bin
    • 八进制(octonary) oct
    • 十六进制(hexdecimalist) hex
<?php
    echo decbin(123),'<br>';   //十进制转二进制
    echo bindec(1111011),'<br>';	//二进制转十进制
    echo dechex(123),'<br>';		//十进制转十六进制
    echo hexdec('7b'),'<br>';		//十六进制转十进制
    echo decoct(123);				//十进制转八进制
?>

浮点型

  • 概念
    • 浮点数在内存中保存的是近似值
    • 浮点数不能参与比较
    • 如果浮点数要比较,必须确定比较的位数
    • 如果一个整数超出了整形的范围,会自动的转成浮点型
<?php
    var_dump(0.9==(1-0.1));		//bool(true) 
    echo '<br>';
    var_dump(0.1==(1-0.9));		//bool(false) 
?>
<?php
    var_dump(0.9==(1-0.1));		//bool(true) 
    echo '<br>';
    var_dump(0.1==(1-0.9));		//bool(false) 
    echo '<br>';
    var_dump(bccomp(0.1,1-0.9,5));	//比较小数点后面5位   int(0)   0表示相等
?>

布尔型

  • 概念
    • 不能使用echo 和print输出布尔型,要使用var_dump()输出
<?php
    $flag=false;
    var_dump($flag);	//bool(false) 
?>

字符串型

概念

  • 概念
    • 在PHP中单引号字符串和双引号字符串是有区别的
    • 单引号字符串是真正的字符串
    • 双引号字符串要解析字符串中的变量
<?php
    $name='tom';
    echo '我的名字叫$name','<br>';	//我的名字叫$name
    echo "我的名字叫$name",'<br>';	//我的名字叫tom
?>

{ }取变量值

  • { }取变量值
    • $和{只要挨着一起就可以
<?php
    $name='tom';
    echo '$name是我的名字','<br>';	//$name是我的名字
    echo "{$name}是我的名字",'<br>';	//{}表示获取变量的值(tom是我的名字)
    echo "${name}是我的名字",'<br>';	//$和{只要挨着一起就可以(tom是我的名字)
?>

输出特殊字符

  • 输出特殊字符
<?php
    echo '毛主席说:\'上课不要睡觉\'','<br>';	//转义字符 \'
    echo '文件保存在c:\\';   //文件保存在c:\
?>

字符串定界符 <<<

  • 字符串定界符
    • 有<<<开头,后面跟的是标识符
    • 字符串定界符的结束符必须顶格写,前面不能有任何的空白字符
    • 字符串定界符分为两种,heredoc(双引号),nowdoc(单引号)
    • 使用''在开始的定界符号中,将支持双引号的功能,改成了单引号的功能
<?php
    $name='tom';
    echo <<<mian
        $name <br>
        <h1>锄禾日当午</h1>
        <h1>汗滴禾下土</h1>
        <h1>谁知盘中餐</h1>
        <h1>粒粒皆辛苦</h1>
    mian
?>
<?php
    $name='tom';
        $echo <<<'mian'
        $name <br>
        <h1>锄禾日当午</h1>
        <h1>汗滴禾下土</h1>
        <h1>谁知盘中餐</h1>
        <h1>粒粒皆辛苦</h1>
    mian
?>

数组

数组的概念

  • 概念
    • 在PHP中数组有两种形式,索引数组和关联数组
    • 数组在内存中一段连续的空间
    • 如果要保存同一类型的多个数据就使用数组

索引数组与关联数组

  • 索引数组与关联数组
    • 索引数组:用整数做下标,默认从0开始,后面依次加一
    • 关联数组:用字符串做下标,通过=>符号将下标和值关联起来
<?php
    # 索引数组
    $stu= array('tom','berry','ketty');   //索引数组
    print_r($stu);	//输出数组  Array ( [0] => tom [1] => berry [2] => ketty ) 
    echo '<hr>';
    echo $stu[0], '<br>';	//tom
    echo $stu[1], '<br>';	//berry
    echo $stu[2], '<hr>';	//ketty
    # 关联数组
    $emp=array('name'=>'李白','sex'=>'男','age'=>22);
    print_r($emp);	//Array ( [name] => 李白 [sex] => 男 [age] => 22 ) 
    echo '<hr>';
    echo $emp['name'],'<br>';	//李白
    echo $emp['sex'],'<br>';	//男
    echo $emp['age'];	
?>

数组的下标

  • 数组的下标
    • 数组的下标只能是正整数和字符串
<?php
    $array= array(1=>'a','b','c','d');
    print_r($array);   //Array ( [1] => a [2] => b [3] => c [4] => d ) 
    echo '<br>';
    --------------------------
    $array= array('a',2=>'b','c',5=>'d');
    print_r($array);  //Array ( [0] => a [2] => b [3] => c [5] => d ) 
    echo '<br>';
    ----------------------------
    $array= array('a','name'=>'b','c','sex'=>'d');
    print_r($array); //Array ( [0] => a [name] => b [1] => c [sex] => d ) 
    echo '<br>';
    ------------------------------
    $array= array(1=>'a',1=>'b',1=>'c','d');
    print_r($array);	//Array ( [1] => c [2] => d ) 
?>
<?php
    $stu[true]='tom';		//转成1
    $stu[false]='berry';	//转成0
    $stu[12.9]='aa';		//转成12(取整数部分)
    $stu[-10]='bb';			//负数可以做下标
    $stu[-12.3]='cc';		//取负整数
    $stu['10']='dd';		//字符串数字转成数字
    $stu['']='ee';			//空字符串也可以做下标
    $stu[null]='ff';		//转成空字符串做下标
    print_r($stu);      //Array ( [1] => tom [0] => berry [12] => aa [-10] => bb [-12] => cc [10] => dd [] => ff )
?>

短数组语法

  • 短数组语法
    • 可以直接通过中括号声明数组
<?php
    $stu=['tom','berry','ketty'];
    print_r($stu);  //Array ( [0] => tom [1] => berry [2] => ketty ) 
?>

数组的赋值

  • 数组的赋值
    • PHP7.1语法
<?php
    # 两个数交换
    $num1= 10;
    $num2= 20;
    [$num1, $num2]= [$num2, $num1];
    echo $num1, '<br>', $num2;
?>

二维数组

  • 二维数组
<?php
    $stu=[
        ['name'=>'tom','sex'=>'男','age'=>22],
        ['name'=>'berry','sex'=>'女','age'=>23]
    ];
    echo '<pre>';
    print_r($stu);
?>

字符串可以通过数组的方式去调用

  • 字符串可以通过数组的方式去调用
<?php
    echo 'abc'[0],'<br>';		//a  
    echo 'abc'[-1],'<br>';		//c,从右边开始取第一个  7.1开始支持
?>

对象

  • 面向对象编程

资源

NULL

  • 在PHP中 null和NULL是一样的,不区分大小写

检测变量的数据类型

相关函数

  • 检测数据类型的相关函数

    • is_bool 检测变量是否属于布尔类型
    • is_string 检测变量是否属于字符串类型
    • is_float 检测变量是否属于浮点类型
    • is_integer 检测变量是否属于整型
    • is_null 检测变量是否属于空值
    • is_array 检测变量是否属于数组
    • is_resource 检测变量是否属于资源
    • is_object 检测变量是否属于对象类型
    • is_numeric 检测变量是否属于数字或数字组成的字符串
  • 检测数据类型的函数

    • gettype()

可变变量

  • 变量名为地址值
<?php
    $txt = 'abc';
    $$txt = 123;
    echo $abc;      // 123
?>

变量类型的转换

自动类型转换

  • 自动类型转换
    • 当提供的类型和需要的类型不一致的时候会自动进行类型转换
<?php
    $num=10;
    if($num){   //自动将数字转成布尔型
        echo 'aa';
    }else{
        echo 'bb';
    }
    # ---------------------------------
    echo '20'-10;	//自动的将字符串转成数字
?>

强制类型转换

  • 强制类型转换
    • 语法:(数据类型)数据
<?php
    $num1='12';
    var_dump($num1,(int)$num1,(float)$num1);   
    //string(2) "12" int(12) float(12) 
?>
  • 强制转换类型

    • (boolean) 强制转为布尔型
    • (string) 强制转为字符串型
    • (integer) 强制转为整型
    • (float) 强制转为浮点型
    • (array) 强制转为数组
    • (object) 强制转为对象
  • 其他类型和布尔之间的转换

    • 非0非空为真,其他为假
<?php
    var_dump((bool)'abc');	    echo '<br>';	//bool(true)  
    var_dump((bool)'');		      echo '<br>';	//bool(false) 
    var_dump((bool)'0');	      echo '<br>';	//bool(false) 
    var_dump((bool)'0.0');	    echo '<br>';	//bool(true) 
    var_dump((bool)'00');	      echo '<br>';	//bool(true) 
    var_dump((bool)'false');	  echo '<br>';	//bool(true) 
    var_dump((bool)'null');	    echo '<br>';	//bool(true) 
    var_dump((bool)1);		      echo '<br>';	//bool(true) 
    var_dump((bool)0);		      echo '<br>';	//bool(false) 
    var_dump((bool)-10);		    echo '<br>';	//bool(true) 
    var_dump((bool)0.0);		    echo '<br>';	//bool(false) 
    var_dump((bool)array());	  echo '<br>';	//bool(false) 
    var_dump((bool)array(1));	  echo '<br>';	//bool(true) 
    var_dump((bool)array(false));echo '<br>'; //bool(true) 
    var_dump((bool)null);	      echo '<br>';	//bool(false) 
?>
posted @ 2020-11-12 08:12  wing1377  阅读(133)  评论(0编辑  收藏  举报