类型转换| 学习笔记

简介: 快速学习类型转换。

开发者学堂课程【PHP 基础入门课程(上) :类型转换】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/709/detail/12598


类型转换


内容介绍

一、目标概念

二、步骤

三、示例

四、常见转换逻辑
五、小结


一、目标概念

如果某一项的数据,比如某一种数据的一个类型,它是一种字符串类型。

这个在网站开发的时候非常常见,但是此时如果需要参与运算的,那就是数值。

那么此时就必须要用到什么类型转换,来看一下概念。类型转换就是将某种不符合的类型转换成我们目标所要的类型。

在 PHP 中提供了两种的类型转换的方式,第一种叫做自动转换,系统它根据所需要的类型,当然它根据的是一个参与运算的一个目标,去自动转换成目标类型,比较方便。第二种叫做强制转换。

人为地在进行某项运算之前,先把数据强制转换成目标类型,那么这样对于计算机而言,忽略了自己去判定的一种方式,直接就会把这个目标转换成一个目标类型,它的效率是比较高的。


二、步骤

1、自动转换

自动转换其实很简单,就是系统它会自动检测当前参与运算所需要的类型是什么。

然后他在检测我们当前提供的数据是什么类型,最后,就会把它自动转换成一个目标类型。它有一个特点,它不改变数据本身。
2、强制转换
强制类型转换,首先要明确所需要的类型是什么,这个地方参与运算,需要提供什么数据。

确定了之后,就把目标的一个数据类型,做一个强制要求就可以了,再把数据拿过来,把它转换成对应的类型就可以了。

这个里面转换有两种方式,第一种叫不改变原来的数据,原来什么样子,数据是什么,不改变,就要当前的一个数据。

第二个就是要改变它的一个类型。那么此时要用到一个函数,把这个变量转换成你目标,想要的一个类型,原来的数据没有了,因为被我=强制给转换了,会把结果调整过来。

这就是强制的两种方式,强制要转换成的类型的话,有很多。其中资源跟 NULL 类型不能够进行强制转。只能转换成基本类型。

integer:转换成整型

ofloat:转换成浮点型

obool:转换成布尔类型

ostring:转换成字符串类型

oarray:转换成数组类型

oobject:转换成对象类型


三、示例

这里以一个数值和字符串作为示例

#定义数据:假装是外来数据$num1 = 5;

$num2 = '1.23a';

#算术运算:求和(自动转换):只能是数值操作

echo $num1+ $num2: #6.23

#系统判定当前是加法操作,需要数值类型(整型|浮点型)

#系统判定当前参与运算的数据类型:$num1 是整型,$num2 是字符串型

#系统自动转换不符合目标的类型编程目标类型:$num2 ==> 数值型(浮点型) ==>1.23

var_dump($num2); #string(5),依然是字符串,值也是'1.23a',没有改变

#算术运算:求和(强制转换):只能是数值操作(不改变类型 echo (float)$num1+(float)$num2:  #6.23

var_dump($num1.$num2);   #int 100, string(5) '1.23a'

#强制转换:

改变类型(一般比较少用,除非是特定位置) settype($num1,'float'); settype($num2,'float');

var_dump($num1,$num2);   #float 100,float 1.23

以上的这个过程就是自动转换和强制转换,而强制转换分两种,一种改变数值本身是一种不改变,那么这种其实用的比较少,通常不会改变数据太多,只是说把它拿来变成我们想要的数据,参与运算就可以了。

但是这种也会用到,也会用到,因为要保证安全。


四、常见转换逻辑

1、字符串转数值

纯数值字符串=》相应数值:"123.1'=> 123.1

数字开头但有字母=》保留数字部分:'12a'=> 12

小数点开头=》保留第一个小数点及之后的连续数字:.1.1.a=> 0.1·字母开头=》0:_a123'=> 0
然后找小数点在找小数点后的数值,这样的话可以组建成有效的一个数值。如果是字母开头,那就是零。

2、其他类型转布尔
极少转换后是 FALSE,基本都是 TRUE,以下除外

布尔 FALSE 转布尔: FALSE ·整型0转布尔: FALSE

浮点型0.0转布尔: FALSE

空白字符串"和字符串'0"转布尔:FALSE

空数组 array() 转布尔: FALSE (比较多运用)·空类型 NULL 转布尔: FALSE


五、小结

1、类型转换是根据目标需求(运算)将数据变成目标格式

自动转换(PHP 用的最多):

系统自动识别。强制转换(建议):开发者限定

对值进行类型控制:

在变量前使用:(目标类型),不会改变变量本身。对变量进行类型重置:使用settype,会改变变量

2、类型转换逻辑

字符串转数值。其他类型转布尔
较多转都是布尔 true。极少数转成 false

相关文章
|
安全 C++
C++ 新的类型转换
C++ 新的类型转换
86 0
|
存储 安全 编译器
类型转换(C++)
类型转换(C++)
77 0
|
6月前
|
C++
c++类型转换
c++类型转换
79 1
|
6月前
|
安全 编译器 程序员
【C++】—— C++的类型转换
【C++】—— C++的类型转换
|
安全 C#
C#类型转换
C#类型转换
51 0
|
编译器 C++
【C++】类型转换
【C++】类型转换
72 0
|
程序员 编译器 C++
C++ 几种类型转换
C++ 几种类型转换
|
安全 程序员 C++
C++——类型转换
C++——类型转换
100 0
C++——类型转换
|
C语言 C++
【C++中的类型转换】C语言类型转换与C++类型转换对比,以及4种C++类型转换详解
【C++中的类型转换】C语言类型转换与C++类型转换对比,以及4种C++类型转换详解
321 0
【C++中的类型转换】C语言类型转换与C++类型转换对比,以及4种C++类型转换详解