SharkJiao

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) 
?>

分类:

技术点:

相关文章:

  • 2021-10-03
  • 2022-02-05
  • 2022-03-04
  • 2021-06-16
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-23
  • 2021-05-30
  • 2022-01-22
相关资源
相似解决方案