浅析php数据类型转换


Posted in PHP onJanuary 09, 2014

PHP 在变量定义中不需要(或不支持)明确的类型定义;变量类型是根据使用该变量的上下文所决定的。也就是说,如果把一个字符串值赋给变量 var,var 就成了一个字符串。如果又把一个整型值赋给 var,那它就成了一个整数。

PHP 的自动类型转换的一个例子是加号“+”。如果任何一个操作数是浮点数,则所有的操作数都被当成浮点数,结果也是浮点数。否则操作数会被解释为整数,结果也是整数。注意这并没有改变这些操作数本身的类型;改变的仅是这些操作数如何被求值以及表达式本身的类型。 

类型强制转换
允许的强制转换有:

•(int), (integer) - 转换为 整型(integer)
•(bool), (boolean) - 转换为 布尔型(boolean)
•(float), (double), (real) - 转换为 浮点型(float)
•(string) - 转换为 字符串(string)
•(binary) - 转换为二进制 字符串(string) (PHP 6)
•(array) - 转换为 数组(array)
•(object) - 转换为 对象(object)
•(unset) - 转换为 NULL (PHP 5)
(binary) 转换会在结果前面加上前缀'b',PHP 5.2.1 新增。

注意在括号内允许有空格和制表符

将 字符串(string)文字和变量转换为二进制 字符串(string):

<?php
$binary = (binary)$string;
$binary = b"binary string";
?>

如果要改变一个变量的类型,参见 settype();

settype — 设置变量的类型

bool settype ( mixed $var , string $type )
将变量 var 的类型设置成 type。

type 的可能值为:

•“boolean” (或为“bool”,从 PHP 4.2.0 起)
•“integer” (或为“int”,从 PHP 4.2.0 起)
•“float” (只在 PHP 4.2.0 之后可以使用,对于旧版本中使用的“double”现已停用)
•“string”
•“array”
•“object”
•“null” (从 PHP 4.2.0 起)
成功时返回 TRUE, 或者在失败时返回 FALSE.

 intval() , floatval() , strval() , 这三个函数也可转换

下面主要分享一下PHP数据类型转换的知识。

PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有:

(int)、(integer):转换成整形
(float)、(double)、(real):转换成浮点型
(string):转换成字符串
(bool)、(boolean):转换成布尔类型
(array):转换成数组
(object):转换成对象

PHP数据类型有三种转换方式:

(1)在要转换的变量之前加上用括号括起来的目标类型,例如:

(int)  (bool)  (float)  (string)  (array) (object) 下面通过实例说明:

<?php
$num1=3.14;
$num2=(int)$num1; //强制转换为int类型
var_dump($num1); //输出float(3.14)
var_dump($num2); //输出int(3)

(2)使用3个具体类型的转换函数,intval()、floatval()、strval() ,实例如下:

<?php
$str="123.9abc";
$int=intval($str); //转换后数值:123
$float=floatval($str); //转换后数值:123.9
$str=strval($float); //转换后字符串:"123.9"

(3)使用通用类型转换函数settype(mixed var,string type) ,具体实例如下:

<?php
$num4=12.8;
$flg=settype($num4,"int");
var_dump($flg); //输出bool(true)
var_dump($num4); //输出int(12)
PHP 相关文章推荐
Apache2 httpd.conf 中文版
Nov 17 PHP
PHP编码转换
Nov 05 PHP
php数组(array)输出的三种形式详解
Jun 05 PHP
ThinkPHP CURD方法之order方法详解
Jun 18 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
Jul 22 PHP
php程序总是提示验证码输入有误解决方案
Jan 07 PHP
微信access_token的获取开发示例
Apr 16 PHP
PHP序列化/对象注入漏洞分析
Apr 18 PHP
php 5.4 全新的代码复用Trait详解
Jan 05 PHP
PHP 中使用ajax时一些常见错误总结整理
Feb 27 PHP
thinkPHP框架自动填充原理与用法分析
Apr 03 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
Aug 24 PHP
js和php邮箱地址验证的实现方法
Jan 09 #PHP
php检测用户是否用手机(Mobile)访问网站的类
Jan 09 #PHP
php获取文件内容最后一行示例
Jan 09 #PHP
php权重计算方法代码分享
Jan 09 #PHP
php实现分页工具类分享
Jan 09 #PHP
codeigniter框架批量插入数据
Jan 09 #PHP
eaglephp使用微信api接口开发微信框架
Jan 09 #PHP
You might like
十天学会php之第一天
2006/10/09 PHP
php使用curl模拟登录后采集页面的例子
2013/11/04 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
2020/04/23 PHP
HR vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
JavaScript 变量命名规则
2009/09/23 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
Javscript删除数组中指定元素并返回新数组
2014/03/06 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
浅谈javascript事件取消和阻止冒泡
2015/05/26 Javascript
jQuery定义插件的方法
2015/12/18 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
jQuery基于ajax操作json数据简单示例
2017/01/05 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
2017/03/01 Javascript
js实现二级导航功能
2017/03/03 Javascript
使用vue框架 Ajax获取数据列表并用BootStrap显示出来
2017/04/24 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
浅析vue-router原理
2018/10/19 Javascript
[01:53]DOTA2超级联赛专访Zhou 五年职业青春成长
2013/05/29 DOTA
python实现人人网登录示例分享
2014/01/19 Python
Python中isnumeric()方法的使用简介
2015/05/19 Python
Python并发之多进程的方法实例代码
2018/08/15 Python
TUMI澳大利亚网站:美国旅行箱包品牌
2017/03/27 全球购物
大学生演讲稿范文
2014/01/11 职场文书
2014年情人节活动方案
2014/02/16 职场文书
企业管理毕业生求职信
2014/03/11 职场文书
加油口号大全
2014/06/13 职场文书
大专毕业生求职信
2014/07/05 职场文书
校友回访母校寄语
2015/02/26 职场文书
谁动了我的奶酪读书笔记
2015/06/30 职场文书
志愿者服务宣传标语口号
2015/12/26 职场文书
二年级作文之动物作文
2019/11/13 职场文书
Golang jwt身份认证
2022/04/20 Golang