本文转发来自:https://blog.csdn.net/KH_FC/article/details/115558701

在真正使用PHP写项目时会经常用到不同数据类型之间进行转换,PHP中类型转换是比较简单的,只需要在变量前面加上用括号括起来的数据类型名称就可以了,数据类型转换有以下几种:

转换类型 说明
(bool)(boolean) 转换为布尔值
(string) 转换为字符串
(int)(integer) 转换为整数
(float)(double)(real) 转换为浮点型
(array) 转换为数组
(object) 转换为对象
(unset) 转换为NULL,也就是删除变量
(binary)b前缀 转换为二进制字符串

除了上面几种转换方式还有一个使用settype()函数进行转换

示例】使用settype()函数进行数据类型转换

<?php
$a = "abc";
$b = 123;
settype( $b, "float");
var_dump($b);
?>

输出结果为:float(123)

方法settype()使用方法

函数内第一个为变量,在上面示例中为$b,第二个参数为数据类型,也就是你想将这个变量值转换为哪种类型,在上面示例中使用的是float,在PHP7版本中支持boolean、float、integer、string、null、array、object。注意:此函数只能返回布尔值,可用于判断,类型转换成功则返回true,转换失败则返回false

示例】转换数据类型的常用方法

<?php
$num = '123abc';
var_dump((integer)$num);
echo '<br>';
var_dump((float)$num);
echo '<br>';
var_dump((string)$num);
?>

输出结果为:

int(123)
float(123)
string(6) "123abc"

1.转换为字符串

一个值可以通过在值前面加上(string)或者(strval)函数来转换为字符串,在一个需要字符串的表达式中,字符串会自动转换,在使用函数echo()或者print()时,或者在一个变量和一个字符串进行比较时,就会发生这种转型。print()类似于print_r()

示例

<?php
$str = 'abcdef';
$num = 12345.123;
var_dump((string)$num);
echo '<br>';
if ($str == 'abcdef') {
echo true;
}
?>

输出结果为:

string(9) "12345.123"
1

注意】在进行字符串转换时应注意以下几点:

  1. 一个布尔值被转换时则会将true转换成1,而false值将会被转换为空""这里空不是NULL,而是空的字符串,这种转换可以在布尔值和字符串之间随意转换。
  2. 一个整数或者浮点数被转换字符串,则会转换为数字的字面样式的字符串,包括采用科学技术法记录的浮点数。
  3. 数组被转换为字符串Aaary,因此使用函数echo()或者print()无法正确的显示出数组的值,如果想要正确输出数组中的值则需要采用echo (array('$a'))这种方式进行,也就是读取数组中值的方法。
  4. 资源总会被转换为Resource id#1结构的字符串,其中1是PHP分配给该资源独有的数字。
  5. NULL总会被转换为空的字符串。

2.转换为整数

想要将一个值转换为整数,可以使用(int)或者(integer)进行强制转换,不过大多数都不需要进行转换,在使用运算符、函数或者判断数值需要一个整数值时,值会自动转换为整数,还可以通过intval()函数进行转换。

注意】在进行转换整数时需要注意以下两点:

  1. 当要将布尔值转换为整数时,则会将布尔值中true转换为1false则会被转换为0
  2. 当要将浮点数转换为整数时,将向零取整,如果浮点数超出了整数范围,则转换结果变得不容易控制,这里不建议将未知的浮点数转换为整数,因为获取的结果可能不是你想象的那样哦,还有就是向零取整并不是四舍五入。

    示例
<?php
$bool = true;
$float = 10.6111;
$abc = ( 0.1 + 0.7 ) *10;
echo intval($bool);
echo '<br>';
echo intval($float);
echo '<br>';
echo (int)$abc;
?>

输出结果为:

1
10
7

这个示例可以看出正常情况下$abc运算结果为8,但是当转换为整型后确输出了7,输出结果不正确,所以在浮点数转换整数时一定要注意。

3. 转换为布尔值

想要将一个值转换为布尔值是比较简单的,只需要使用(bool)或者(boolean)来强制转换为布尔值即可,大部分情况下是不需要进行转换的,当使用运算符、函数或者做判断时都可以自动转换为布尔值的。

注意】在转换布尔值时需要注意下面几个值转换则会转换为false

  1. 0:整数零
  2. 0.0:浮点数零
  3. "0":字符串零
  4. "":空字符串
  5. 空数组:没有任何值得数组
  6. 空对象:没有任何成员变量得对象
  7. NULL:特殊类型NULL
  8. 从没有任何标记得XML文档生成得SimpleXML对象

    除了以上值所有类型所有值都会转换为true

    示例
<?php
$array = array();
$int = 1;
$str = "";
var_dump((bool)$array);
echo '<br>';
var_dump((bool)$int);
echo '<br>';
var_dump((bool)$str);
?>

输出结果为:

bool(false)
bool(true)
bool(false)

4. 检测数据类型

在很多时候都需要由程序自动去判断数据类型,PHP内置了一些检测数据类型得函数,可以根据不同得类型进行检测,判断是否属于某种类型,如果符合则返回true,如果不符合则返回false。常用得数据类型检测函数:

检测函数 说明
is_bool 检测变量是否为布尔值
is_string 检测变量是否为字符串
is_float 检测变量是否为浮点数
is_int 检测变量是否为整数
is_null 检测变量是否为空
is_array 检测变量是否为数组
is_object 检测变量是否为对象
is_numeric 检测变量是否为数字或者是数字组成得字符串
is_double 检测变量是否为浮点数

示例1】判断是否为整数

<?php
$int = 100;
if (is_int($int)){
echo '$int'."是整数类型,并且整数值为$int";
}else{
echo '$int'."不是整数类型";
}
?>

输出结果为:$int是整数类型,并且整数值为100

示例2】判断是否为浮点数

<?php
$int = 100;
if (is_float($int)){
echo '$int'."是浮点数类型,并且浮点数值为$int";
}else{
echo '$int'."不是浮点数类型";
}
?>

输出结果为:$int不是浮点数类型

小灶】在测试字符时经常会遇到不知道会输出什么类型得值,也不知道自己写得变量是什么类型时,可以采用gettype()或者var_dump()查看变量或者值得数据类型

  • gettype函数只输出值或变量得类型,不会输出值
  • var_dump函数即输出值也输出类型

    示例】使用gettype函数输出变量类型
<?php
$int = 0.1111;
echo gettype($int);
?>

输出结果为:double也就是浮点数类型

自学PHP笔记(三) 类型转换的更多相关文章

  1. 孤荷凌寒自学python第三十九天python 的线程锁Lock

    孤荷凌寒自学python第三十九天python的线程锁Lock (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 当多个线程同时操作一个文件等需要同时操作某一对象的情况发生时,很有可能发生冲突, ...

  2. 孤荷凌寒自学python第三十八天初识python的线程控制

     孤荷凌寒自学python第三十八天初识python的线程控制 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.线程 在操作系统中存在着很多的可执行的应用程序,每个应用程序启动后,就可以看 ...

  3. 孤荷凌寒自学python第三十七天python的文件与内存变量之间的序列化与反序列化

    孤荷凌寒自学python第三十七天python的文件与内存变量之间的序列化与反序列化 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.什么是序列化与反序列化 序列化是指将内存中的数据进行指 ...

  4. 孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容

     孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.打开文件后,要务必记得关闭,所以一般的写法应当 ...

  5. 孤荷凌寒自学python第三十四天python的文件操作对file类的对象学习

     孤荷凌寒自学python第三十四天python的文件操作对file类的对象学习 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.close() 当一个file对象执行此方法时,将关闭当前 ...

  6. 孤荷凌寒自学python第三十三天python的文件操作初识

     孤荷凌寒自学python第三十三天python的文件操作初识 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天开始自学python的普通 文件操作部分的内容. 一.python的文件打开 ...

  7. 孤荷凌寒自学python第三十一天python的datetime.timedelta模块

     孤荷凌寒自学python第三十一天python的datetime.timedelta模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) datetime.timedelta模块是一个表示 ...

  8. 孤荷凌寒自学python第三十天python的datetime.datetime模块

     孤荷凌寒自学python第三十天python的datetime.datetime模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) datetime.datetime模块包含了:datet ...

  9. 孤荷凌寒自学python第三天 初识序列

    孤荷凌寒自学python第三天 初识序列 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) Python的序列非常让我着迷,之前学习的其它编程语言中没有非常特别关注过序列这种类型的对象,而pyt ...

随机推荐

  1. h5 localStorage和sessionStorage浏览器数据缓存

    sessionStorage 会话数据,localStorage 没有过期时间 两个的API基本都一样的 基本的使用 // 保存一个数据 sessionStorage.setItem('key', ' ...

  2. 详解稳定币圣杯USDN

    稳定币飞速发展,USDN 一骑绝尘,但因合规问题饱受质疑.合规稳定币作为后来者,奋起直追,亦光耀夺目.而更符合区块链精神的稳定币(抵押其他资产生成稳定币),长期以来只有 Maker 的 DAI 能够在 ...

  3. C++算法代码——鹅卵石游戏

    题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=2334 题目描述 为了消磨时光,奶牛Bessie和她的朋友Elsie喜欢玩一种她们在农 ...

  4. 顶级c程序员之路 基础篇 - 第一章 关键字的深度理解 number-1

    c语言有32个关键字,每个关键字你都理解吗? 今天出场的是: auto ,  register,  static,   extern 为什么他们会一起呢,说到这里不得不谈到c语言对变量的描述. c给每 ...

  5. 【重磅】iNeuOS工业互联平台,系统集成业务模型和WEB组态视图建模集成3D模型

    目       录 1.      概述... 1 2.      平台演示... 2 3.      系统集成业务模型... 2 4.      WEB组态视图建模集成3D模型... 3 5.    ...

  6. SpringBoot(十一): Spring Boot集成Redis

    1.在 pom.xml 中配置相关的 jar 依赖: <!-- 加载 spring boot redis 包 --> <dependency> <groupId>o ...

  7. 2021-2-28:调用 System.gc() 后究竟发生了什么?

    首先,根据 DisableExplicitGC 这个 JVM 启动参数的状态,确定是否会 GC,如果需要 GC,不同 GC 会有不同的处理. 1. G1 GC 的处理 如果是 System.gc() ...

  8. java帝国的诞生

    Java : 一个帝国的诞生 C语言帝国的统治 现在是公元1995年, C语言帝国已经统治了我们20多年, 实在是太久了. 1972年, 随着C语言的诞生和Unix的问世, 帝国迅速建立统治, 从北美 ...

  9. Git:分支管理

    代码中至少有一个分支,就是主分支master,默认都是在主分支上开发. 多分支 分支名: 版本库中必须唯一 不能以 - 开头 可以试用/,但不能以/结尾,被/分隔的名称不能以.开头 不能有连个连续的 ...

  10. MongoDB 在Node中的应用

    转: MongoDB 在Node中的应用 文章目录 一 .什么是 MongoDB? 二.小Demo 三.Demo 增删改查 3.1 新增 3.2 查询 3.2.1 查询所有 [{},{}] 找不到返回 ...