PHP3中文参考手册 中文翻译:Sadly sadly@21cn.com http://wansoft.soim.net | ||
---|---|---|
上一页 | 第五章语法结构 | 下一页 |
PHP中不需要(也不支持)在变量定义时做显式的类型声明;一个变量的类型取决于它的值的类型。也就是说,如果你给变量var 赋了一个字符串值,var 就成为字符串变量。如果你又赋了一个整型值给var, 它就变成了一个整型变量。
一个PHP自动类型转换的例子是加法操作符 '+'。如果任何一个操作数是double型,则所有的操作数按 double类型来计算, 结果也是double型的。否则,所有的操作数按integer类型来计算, 结果也是integer型的。注意:操作数本身的类型不发生变化;类型变换仅在计算时做。
$foo = "0"; // $foo is a string (ASCII 48) $foo++; // $foo is the string "1" (ASCII 49) $foo += 1; // $foo is now an integer (2) $foo = $foo + 1.3; // $foo is now a double (3.3) $foo = 5 + "10 Little Piggies"; // $foo is a double (15) $foo = 5 + "10 Small Pigs"; // $foo is an integer (15)
如果觉得上面的两个例子,请看字符串转换.
如果你要强行指定一个变量作为特定类型进行计算,请看 Type casting 部分。要改变变量的类型,请看settype() 函数。
因为PHP根据需要检测变量类型及进行类型转换,所以一个给定变量的类型不是一成不变的。PHP包含一系列 类型检测函数: gettype(), is_long(), is_double(),is_string(),is_array(),及is_object()。
PHP中的强制类型转换和C中一样: 在需要进行类型强制转换的变量前的括号中写出想要的类型名。
$foo = 10; // $foo is an integer $bar = (double) $foo; // $bar is a double
允许的强制转换是:
注意:括号中可以含有tab或空格,下面的函数将被计算:
$foo = (int) $bar; $foo = ( int ) $bar;
当字符串作为数值类型计算时,结果的值和类型按以下方式决定。
如果字符串中包含任何'.', 'e',及'E'字符,则被作为double类型计算。否则,就作为integer类型计算。
该值从字符串最开始算起。如果字符串是合法的数字,则使用该值,否则值为 0 。合法的数字是一个符号位(可选),后跟一位或几位数字(也可含有一个十进制的小数点), 后跟一位可选的指数。指数是一个 'e' 或 'E'后跟一个或几个数字。
$foo = 1 + "10.5"; // $foo is a double (11.5) $foo = 1 + "-1.3e3"; // $foo is a double (-1299) $foo = 1 + "bob-1.3e3"; // $foo is a double (1) $foo = 1 + "bob3"; // $foo is an integer (1) $foo = 1 + "10 Small Pigs"; // $foo is an integer (11) $foo = 1 + "10 Little Piggies"; // $foo is a double (11); the string contains 'e'
要获得更多关于转换的信息,请看Unix man页里的strtod(3)。