类型转换的判别

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

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

<?php

$foo = "0";  // $foo 是字符串 (ASCII 48)

$foo += 2;   // $foo 现在是一个整数 (2)

$foo = $foo + 1.3;  // $foo 现在是一个浮点数 (3.3)

$foo = 5 + "10 Little Piggies"; // $foo 是整数 (15)

$foo = 5 + "10 Small Pigs";     // $foo 是整数 (15)

?>  

如果上面两个例子看上去古怪的话,参见字符串转换为数值。 

如果要强制将一个变量当作某种类型来求值,参见类型强制转换一节。如果要改变一个变量的类型,参见 settype()。 

如果想要测试本节中任何例子的话,可以用 var_dump() 函数。 

Note: 

自动转换为 数组 的行为目前没有定义。 

此外,由于 PHP 支持使用和数组下标同样的语法访问字符串下标,以下例子在所有 PHP 版本中都有效: 

<?php

$a    = 'car'; // $a is a string

$a[0] = 'b';   // $a is still a string

echo $a;       // bar

?>  

请参阅存取和修改字符串中的字符一节以获取更多信息。 

类型强制转换

PHP 中的类型强制转换和 C 中的非常像:在要转换的变量之前加上用括号括起来的目标类型。 

<?php

$foo = 10;   // $foo is an integer

$bar = (boolean) $foo;   // $bar is a boolean

?>  

允许的强制转换有: 

◾ (int), (integer) - 转换为整形 integer 

◾ (bool), (boolean) - 转换为布尔类型 boolean 

◾ (float), (double), (real) - 转换为浮点型 float 

◾ (string) - 转换为字符串 string 

◾ (array) - 转换为数组 array 

◾ (object) - 转换为对象 object 

◾ (unset) - 转换为 NULL (PHP 5) 

(binary) 转换和 b 前缀转换支持为 PHP 5.2.1 新增。 

注意在括号内允许有空格和制表符,所以下面两个例子功能相同: 

<?php

$foo = (int) $bar;

$foo = ( int ) $bar;

?>  

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

<?php

$binary = (binary)$string;

$binary = b"binary string";

?>  

Note: 

可以将变量放置在双引号中的方式来代替将变量转换成字符串: 

<?php

$foo = 10;            // $foo 是一个整数

$str = "$foo";        // $str 是一个字符串

$fst = (string) $foo; // $fst 也是一个字符串

// 输出 "they are the same"

if ($fst === $str) {

    echo "they are the same";

}

?>  

有时在类型之间强制转换时确切地会发生什么可能不是很明显。更多信息见如下小节: 

◾ 转换为布尔型  

◾ 转换为整型  

◾ 转换为浮点型  

◾ 转换为字符串  

◾ 转换为数组  

◾ 转换为对象  

◾ 转换为资源  

◾ 转换为 NULL  

◾ 类型比较表 

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

php编程基础教程.pptx|php编程培训,php,编程,基础,教程,pptx
php编程基础教程.pptx

历史上的今天:04月19日

热门专题

一年制中专|中专学历,中专是什么学历,中专是什么,中专有什么专业,中专升大专,一年制中专
一年制中专
APP开发|app开发_app开发公司_app软件开发_专业app开发_云南app开发公司_app定制_原生app开发定制
APP开发
安徽中源管业|安徽中源管业,安徽中源管业mpp电力管,安徽中源管业cpvc电力管,安徽中源管业pe穿线管,安徽中源管业电力管,安徽中源管业排水管,安徽中源管业通信管,安徽中源管业管材
安徽中源管业
自考本科|自考本科有用吗,自考文凭,自考本科文凭,自考文凭有用吗,自考本科文凭有用吗,自考文凭承认吗
自考本科
外贸网站建设|外贸网站建设,英文网站制作,英文网站设计,美国主机空间,外贸建站平台,多语言网站制作
外贸网站建设
安徽开放大学|安徽开放大学报名,安徽开放大学报考,安徽开放大学,什么是安徽开放大学,安徽开放大学学历,安徽开放大学学费,安徽开放大学报名条件,安徽开放大学报名时间,安徽开放大学学历,安徽开放大学专业
安徽开放大学
昆明网站建设|昆明网站建设,昆明网站开发,昆明网站建设公司,昆明网站建设价格,昆明网站设计,昆明网站制作,网页设计,高端网站建设,高端网站设计
昆明网站建设
易捷尔单招|易捷尔单招,易捷尔单招培训,易捷尔单招报名,易捷尔单招考试,易捷尔单招培训学校,易捷尔单招分数
易捷尔单招

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部