PHP 简介02-数据类型转化

1.几个常用函数

1.释放内存:unset();

2.检测一个变量是否为空:empty();

实质上为检测是否与false等价 空=true 非空=false

3.检测一个变量是否设置:isset();

实际上为检测是否为null或未定义变量 已设置:true 未设置:false

1
2
3
4
5
6
7
8
9
10
11
$a=10;		#未空,已设置
$a=0; #空,已设置
$a=0.0; #空,已设置
$a=false; #空,已设置
$a=[]; #空,已设置
$a='0'; #空,已设置
$a=null; #空,未设置
$a=$b; #空,未设置
$a=$obj; #未空,已设置
$a=$resource; #非空,已设置

2. 输出方式

PHP中常用输出方式常见的有4种:

1.echo

​ 为PHP基本语法,支持int,float,string,resource类型的数据输出

​ 格式:echo '输出内容';

2.print / print()

​ print为基本语法结构,print()为函数,返回值为int

​ 支持int,float,string,resource类型的数据输出

​ 格式:print 输出内容 print(输出内容);

3.print_r()

​ print_r() 为函数,返回值为bool

​ 支持int,float,string,array,resource,object类型的数据输出

4.var_dump()

​ var_dump()为函数,无返回值。可以支持任何类型的数据

print_r() 和 var_dump() 的区别:

print_r() 理论上可以输出无数个数据,但实际上受到内存大小的限制

var_dump() 最多只能输出128条数据,其他的隐藏

print_r() 的美化:

1
2
3
4
print_r('<pre>');
print_r($arr);
print_r('</pre>');

3. 数据类型转化 DateType

运算本质是同类型的数据之间的运算

标量数据的转换分为两种:自动类型转换 和 强制类型转换

1.自动类型转换:隐式转换

  • 布尔型(bool)转为整型(int)

    1
    2
    3
    var_dump(true+10);			#11			true->1
    var_dump(false+10); #10 false->0

  • 布尔型(bool)转为浮点型(float)

    1
    2
    3
    var_dump(true+10.5);	#11.5	true->1.0
    var_dump(false+10.5); #10.5 false->0.0

  • 字符串(string)转为整型(int)

    1
    2
    3
    4
    5
    6
    var_dump('abc'+10);			#10
    var_dump('123'+10); #133
    var_dump('1a2b'+10); #11
    var_dump('a1b3'+10); #10
    var_dump('12av'+10); #22

    • 从前往后,保留前面的数字,从第一个非数字开始向后全部抛弃(包括后面的数字)
  • 字符串(string)转为浮点型(float)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    var_dump( '1.2' + 10.5 );			#11.7
    var_dump( '1a.2' + 10.5 ); #11.5
    var_dump( 'a1.2' + 10.5 ); #10.5

    var_dump( '1.2e3' + 10.5 ); #1210.5
    var_dump( '1.2e3e4' + 10.5 ); #1210.5
    var_dump( '1.2.3.4' + 10.5 ); #11.7


    • 从前往后,保留前面的数字,从第一个非数字开始向后全部抛弃(包括后面的数字)
    • 识别第一个科学计数法和第一个小数点
  • 整型(int)转为浮点型(float)

    1
    2
    3
    var_dump( 1 + 2.5 ); 		# 3.5 		1 -> 1.0


2.强制类型转换:强制转换

  • 临时转换

    • 通过运算符来强制转换(值适用于标量和复合数据,不包含特殊类型的数据)

      1
      2
      3
      4
      5
      6
      7
      8
      var_dump((int)$str);
      var_dump((float)$str);
      var_dump((bool)$str);
      var_dump((string)$str);
      var_dump((object)$str);
      var_dump((array)$str);


    • 通过函数来强制转换

      1
      2
      3
      4
      5
      6
      var_dump(intval($str));
      var_dump(floatval($str));
      var_dump(boolval($str));
      var_dump(strval($str)); #字符串转化是strval,而不是stringval


  • 永久转换

    通过函数 settype(变量名,类型) 来永久转换数据,之后数据不一定能转换回原数据

    1
    2
    3
    4
    5
    6
    7
    settype($str,'int');
    var_dump($str);

    settype($str,'string');
    var_dump($str);


4. 常量 Define

1.常量:经常固定不变的量(constant)

2.格式格式:const 常量名=常量值; 或者 define(常量名,常量值)

1
2
3
4
5
6
7
const CHINA = '中国';			
var_dump( CHINA );

define('NUME',1000);
var_dump(NUME);


注意

​ 常量名默认区分大小写,推荐使用大写,与变量区分;

​ define函数的完整格式为define(常量名,常量值,bool值),其中总bool值默认值为false,代表区分大小写,若为true则不区分大小写;

3.魔术常量

__FILE__ 当前文件路径

__LINE__ 当前代码行号

__DIR__ 当前文件目录

1
2
3
4
5
var_dump(__FILE__);		#:string 'D:\wamp\www\XIA\0409\08-define.php' (length=34)	
var_dump(__LINE__); #:int 39
var_dump(__DIR__); #:string 'D:\wamp\www\XIA\0409' (length=20)


4.预定义常量

PHP_INT_MAX 显示最大整型常量

PHP_INT_MIN 显示最小整型常量

M_PI 圆周率

PHP_VERSION 显示当前PHP版本号

PHP_OS 显示当前使用操作系统(Windows都显示WINNT)

1
2
3
4
5
6
7
var_dump(PHP_INT_MAX);			#:int 2147483647
var_dump(PHP_INT_MIN); #:int -2147483648
var_dump(M_PI); #:float 3.1415926535898
var_dump(PHP_VERSION); #:string '7.0.4' (length=5)
var_dump(PHP_OS); #:string 'WINNT' (length=5)


5. 运算符 Operation

PHP中运算符主要有以下七种

  • 算术运算符
  • 自增/自减运算符
  • 赋值运算符
  • 比较运算符
  • 拼接运算符
  • 逻辑运算符
  • 三元运算符

1.算术运算符

加 减 乘 除 取模(取余)

+ - * / %

取模(%)详解

​ 1)普通取模

1
2
3
4
5
var_dump(5%2);		#1
var_dump(1%2); #1
var_dump(2%2); #0


​ 2)高阶取模

​ ①取模的正负:取决于被除数的正负

1
2
3
4
5
6
var_dump(5%2);		#1
var_dump(5%-2); #1
var_dump(-5%2); #-1
var_dump(-5%-2); #-1


​ ②取模结果的范围:x~y

1
2
3
4
5
6
7
8
9
10
var_dump(0%3);		#0				# %3
var_dump(1%3); #1
var_dump(2%3); #2
var_dump(3%3); #0
var_dump(4%3); #1
var_dump(5%3); #2
var_dump(6%3); #0
var_dump(7%3); #1 # %3的结果永远在0~2之间,都小于3


1
2
3
4
5
6
7
8
9
10
var_dump(0%5);		#0				# %5
var_dump(1%5); #1
var_dump(2%5); #2
var_dump(3%5); #3
var_dump(4%5); #4
var_dump(5%5); #0
var_dump(6%5); #1
var_dump(7%5); #2 # %x的结果永远在0~x-1之间,都小于x


​ 若需求2~5,如何才能达到需求:

1
2
3
4
5
6
	0	~	?		#?=5-2=3	0~3为%4的结果
+ 2
-----------------
2 ~ 5 #即要达到2~5的结果,需要%4+2


​ 推理到x~y,则有:%(y-x+1)+x

1
2
3
4
5
6
	0	~	?			# ?=y-x 	为%[(y-x)+1]的结果
+ x
----------------
x ~ y # 即要达到x~y的结果,需要%(y-x+1)+x