类型转换的判别

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";

?>

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

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

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

Note:

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

  Also,because PHP supports indexing into strings via offsets using the same syntax as array indexing,the following

example holds true for all PHP versions:

<?php

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

  $a[0]='b';

  echo $a;

?>

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

类型强制转换

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

<?php

  $foo=10;

  $bar=(boolean) $foo;

?>

d
允许的强制转换有:

.(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新增.

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

<?php

  $foo=(int) $bar;

  $foo=(int) $bar;

?>

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

<?php

  $binary=(binary)$string;

  $binary=b"binary string";

?>

Note:

可以将变量放置在双引号的方式来代替将变量转换为字符串(string)s:

<?php

  $foo=10;

  $str="$foo";

  $fst=(string)$foo;

  //输出"they are the same"

  if($fst==$str){

    echo "they are the same";

}

?>

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

原文地址:https://www.cnblogs.com/vegas/p/5234625.html