本系列所有代码示例都是在win10*(64位),php7,apache环境下测试的
1、自动转换
自动转换通常是不同数据类型的变量进行混合运算时。不同类型的变量运算,先转换成同一类型,然后再运算。通常是4种标量类型(int、float、string、boolean)才能自动转换。需要注意的是,这里所说的自动转换并没有改变运算类型本身的数据类型。
例如,当$a+$b,变量$a本身并没有数据转换,在其他地方调用$a时,$a类型还是原数据类型。
在混合运算时,自动转换需要遵循转换按数据长度增加方向进行,保证精度不降低。
转换规则:
①布尔值参与运算时,true会转换为整型1、false会转换成整型0后再参与计算
②NULL会转换成整型0再参与计算
③有int和float参与运算时,int类型会先转换成float类型后再计算
④字符串和int或者string计算时,字符串会先转换为数字。eg:“abc”会转换成0;“123abc”会转换成123;“123.123abc”会转换成123.123。
⑤有浮点型参与运算的,结果也是浮点型。全是整型参与运算的,结果则是整型。
eg:

<?php
$a = true;
$b = 123;
echo ($a+$b);//输出124$c = '1.1';
$d = 1;
echo ($c+$d);//输出2.1$a = '1.1a1';
$b = 123;
echo ($a+$b);//输出124.1,在php7下回报Notice: A non well formed numeric value encountered in...,需要强制转换计算前

2、强制转换
1)在不改变原变量类型和值的情况下,强制转换,只是在计算中改变类型,或者用变量接收。
①(int),(integer):转换成整型
②(bool),(boolean):转换成布尔型
③(float),(double),(real):转换成浮点型
④(string):转换成字符串
⑤(array):转换成数组
⑥(object):转换成对象
⑦intval(),floatval()和strval()。intval()获取变量的整数值,floatval()获取变量浮点值,strval()获取变量的字符串值,不能将者三个函数用于数组或对象。
2)直接改变原变量类型和值用settype(),例如settype($a,‘string’);
eg:

<?php$a = '5a';settype($a,'int');var_dump($a);//输出int(5)

3、转换细节
1)整型和浮点型
①整型转换为浮点型:由于浮点型的精度范围远大于整型,所以转换后的数值精度不会改变。
②浮点型转换为整型:自动舍弃小数部分,只保留整数部分。注:如果一个浮点型超过整数取值的有效范围,其结果将是无法确定的(整数的最大值约是2.147e9,这是针对32位来说的)。
eg:

<?php$a = 3.1e19;;var_dump($a);//输出float(3.1E+19)echo (int)$a;//输出-5893488147419103232

2)布尔型以下类型转换为布尔类型的false,其他的转换为true
①0转换为false
②0.0转换为false,var_dump((boolean)0.0);//输出false,var_dump((boolean)'0.0');//输出true
③空白字符""和字符串"0"转换为false
④没有成员的数组array()转换为false
⑤NULL转换为false

3)字符串转换为数字,转换后的数字是从字符串开始部分的数值型字符串,数值型字符串包括正负值和用科学计数法表示的数字。
eg:

<?php$number=intval("5.6abc"); //5$number=(float)"+5.6abc"; //5.6$number=floatval("-1.2e3f4g5"); //-1.2e3$result="12.3xy45"-6; //6.3$result="xy1234"/5; //0,PHP7此处会报A non-numeric value encountered警告,在使用(+ - * / ** % << >> | & ^) 运算时,例如a+b,如果a是开始一个数字值,但包含非数字字符(123a),b不是数字值开始时(b456),就会有A non-numeric value encountered警告。$result="1.2.3.4"*5; //6$result=1+"-1.3e3"; //-1299

4)数组
①布尔、数字和字符串转换为数组,将得到一个包含一个该类型数据元素的数组
②NULL转换为数组,会得到一个空数组
③对象转换为一个数组,所得到的数组键名为对象属性名,值为对应对象属性的值

5)其他
①布尔类型转字符串,false转空字符串"",true转"1"
②数组转字符串,是"Array"
③资源转字符串,是"Resource id#1"
④对象转字符串,是"Object",php7测试报error级别错误
⑤对象转字符串浮点数,php5起报e_notice级别错误,输出是float(1);

4、读取变量类型函数
var_dump($var); //常用于测试
②gettype($var);//当变量不是其八种标准变量时,会返回unknown type
③检测变量是否是某种类型的函数: is_bool()、is_float()、is_integer()、is_numeric()、is_string()、is_array()、is_int() 和 is_object()等,若想测试一个变量是否是数字或数字字符串(如表单输入,它们通常为字符串),必须使用 is_numeric()。

1.3PHP数据类型转换相关推荐

  1. 数据类型转换pytorch

    du = torch.ones([2,2]) a = np.array([[1,2],[3,4]],dtype=np.float32) b = torch.from_numpy(a)#数据类型是不变的 ...

  2. tf.cast()数据类型转换

    tf.cast()函数的作用是执行 tensorflow 中张量数据类型转换,比如读入的图片如果是int8类型的,一般在要在训练前把图像的数据格式转换为float32. cast定义: cast(x, ...

  3. Java中如何实现Date与String之间的数据类型转换

    String 数据类型转换成 Date String inputDate = "2021-04-11";Date outputDate = null;SimpleDateForma ...

  4. Java 数据类型转换

    学而时习之,温故而知新. 数据类型转换,先放一张图,了解数据类型 简单数据类型之间的转换又可以分为: 1 低级到高级的自动类型转换 2 级到低级的强制类型转换 3 包装类过渡类型转换. (有时候我们有 ...

  5. Java基础语法(一)注释,关键字,常量,变量,数据类型,标识符,数据类型转换...

    从今天开始,记录学习Java的过程.要学习Java首先得有环境,至于环境的安装我就不说了,百度有很多教程,比如:http://jingyan.baidu.com/article/20095761904 ...

  6. C/C++各种数据类型转换汇总

    以下是Windows/Linux系统中常用的C/C++各种数据类型转换汇总: #ifndef FBC_MESSY_TEST_DATA_TYPE_CONVERT_HPP_ #define FBC_MES ...

  7. Java类Demo中存在_Java中的数据类型转换

    先来看一个题: Java类Demo中存在方法func0.func1.func2.func3和func4,请问该方法中,哪些是不合法的定义?( ) public class Demo{ float fu ...

  8. Php的if自动转换类型,php之数据类型自动转换,php之数据类型转换_PHP教程

    php之数据类型自动转换,php之数据类型转换 1:概述 ---php是一种弱类型的语言,它可以根据运行环境的变化而自动进行数据类型的转换 1.1转换成布尔类型的原则 以下值都将转换成布尔类型中的fa ...

  9. python数字类型转换函数_Python的数据类型转换函数

    玩蛇网这篇文章给大家介绍关于,Python数据类型的转换函数. Python提供了一些可以把某个值从一种数据类型,转换成为另一种数据类型的内置函数和方法.int函数可以将任何可以转换为整型的值转换为整 ...

最新文章

  1. Class.getResourceAsStream
  2. lucene正向索引——正向信息,Index – Segments (segments.gen, segments_N) – Field(fnm, fdx, fdt) – Term (tvx, ...
  3. shell日期处理函数
  4. 对分查找的最多次数_「剑指offer题解」数组中出现次数超过一半的数字
  5. 工作日志WebRoot--编辑页关于处理两个关联的选择框
  6. 直接获取Program Files目录的API
  7. 绿点 | 区块链介入下的绿色经济 x 妳格局LadyVision x WinMap+!
  8. SPI转can芯片CSM300详解以及Linux驱动移植调试笔记
  9. mysql自增长id用完了,怎么办?
  10. WSUS环境下客户端常用命令
  11. 英语语法长难句——并列句
  12. 5G语音回落4G解决方案-EPS Fallback IPLOOK
  13. 李嘉诚、英特尔、比亚迪入股的雷蛇,上市后能玩把大的吗?
  14. LCD驱动源码分析(s3cfb.c)
  15. 维乐坐垫与艺术创想完美融合,让艺术点亮产品灵光
  16. mac 双开应用的方法
  17. 淫思奇巧篇 之 Lombok神器带你飞(简化POJO)
  18. 程序员漫漫回乡路--我以前的一些想法
  19. RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
  20. python处理wps表格数据匹配_wps表格中怎么在两个表中匹配不同的数据

热门文章

  1. 时间序列之间的相关性检测
  2. 名著赏读 | 精英化与大众化的冲突,读《高等教育不能回避历史——21世纪的问题》...
  3. 机器学习之房价预测实战
  4. 五套企业网站源码下载!
  5. 5分钟快速部署然之协同办公系统
  6. FragAttacks漏洞
  7. 计算机图形学经典教材《计算机图形学原理及实践》作者荣获2021年计算机历史博物馆Fellow奖...
  8. win11下制作u盘pe系统(电脑店,大白菜),提示程序组件不完整
  9. 社群系统ThinkSNS Plus 研发更新播报
  10. 深圳公司法人变更的条件是什么?