以下为学习孔祥盛主编的《PHP编程基础与实例教程》(第二版)所做的笔记。
PHP类型转换分为类型自动转换和类型强制转换。
3.5.2 类型强制转换
类型强制转换允许编程人员手动将变量的数据类型转换成指定的数据类型。PHP提供以下3种类型强制转换方法。
方法1 在变量前面加一个小括号,并把目标数据类型填写在括号中。
这些目标数据类型包括:int, bool, float, string, array, object等。
程序:
1 <?php 2 $x = 11.2; 3 4 $i = (int)$x; 5 $f = (float)$x; 6 $b = (bool)$x; 7 $a = (array)$x; 8 $o1 = (object)$x; 9 $o2 = (object)NULL; 10 11 var_dump($i); //int 11 12 echo "<br/>"; 13 var_dump($f); //float 11.2 14 echo "<br/>"; 15 var_dump($b); //boolean true 16 echo "<br/>"; 17 var_dump($a); //array (size=1) 0 => float 11.2 18 echo "<br/>"; 19 var_dump($o1); //object(stdClass)[1] public 'scalar' => float 11.2 20 echo "<br/>"; 21 var_dump($o2); //object(stdClass)[2] 22 echo "<br/>"; 23 ?>
输出:
1 D:wampServerwwwApache服务器主目录practise例程.php:11:int 11 2 3 D:wampServerwwwApache服务器主目录practise例程.php:13:float 11.2 4 5 D:wampServerwwwApache服务器主目录practise例程.php:15:boolean true 6 7 D:wampServerwwwApache服务器主目录practise例程.php:17: 8 array (size=1) 9 0 => float 11.2 10 11 D:wampServerwwwApache服务器主目录practise例程.php:19: 12 object(stdClass)[1] 13 public 'scalar' => float 11.2 14 15 D:wampServerwwwApache服务器主目录practise例程.php:21: 16 object(stdClass)[2]
说明:1.stdClass是一个既没有成员变量,又没有成员方法的PHP内置类,其作用是:标量数据类型的数据被类型转换为对象时,动态地向对象添加scalar成员变量,scalar成员变量的值来自标量数据类型的取值。2.NULL被类型转换为对象时,将产生一个空对象。
方法2 使用以 val 结尾的函数名的函数
诸如intval()、float()、strval()函数。
程序:
1 <?php 2 $a = "123.9abc"; 3 $b = intval($a); 4 $c = floatval($a); 5 $d = strval($a); 6 var_dump($b); //int 123 7 echo "<br/>"; 8 var_dump($c); //float 123.9 9 echo "<br/>"; 10 var_dump($d); //string '123.9abc' (length=8) 11 echo "<br/>"; 12 ?>
输出:
1 D:wampServerwwwApache服务器主目录practise例程.php:6:int 123 2 3 D:wampServerwwwApache服务器主目录practise例程.php:8:float 123.9 4 5 D:wampServerwwwApache服务器主目录practise例程.php:10:string '123.9abc' (length=8)
方法3 使用settype()函数
语法格式:bool settype(mixed var, string type)
函数功能:设置var的数据类型为type数据类型,type的取值包括"bool'、“int”、“float”、"string"、"array"、"object"、”NULL“等字符串。函数如果执行成功则返回TRUE,否则返回FALSE.
程序:
1 <?php 2 $a = "123.9abc"; 3 settype($a, "bool"); 4 var_dump($a); //boolean true 5 echo "<br/>"; 6 7 $b = "123.9abc"; 8 settype($b, "int"); 9 var_dump($b); //int 123 10 echo "<br/>"; 11 12 $c = "123.9abc"; 13 settype($c, "float"); 14 var_dump($c); //float 123.9 15 echo "<br/>"; 16 17 $d = "123.9abc"; 18 settype($d, "string"); 19 var_dump($d); //string '123.9abc' (length=8) 20 echo "<br/>"; 21 22 $e = "123.9abc"; 23 settype($e, "array"); 24 var_dump($e); //array (size=1) 0 => string '123.9abc' (length=8) 25 echo "<br/>"; 26 27 $f = "123.9abc"; 28 settype($f, "object"); 29 var_dump($f); //object(stdClass)[1] public 'scalar' => string '123.9abc' (length=8) 30 echo "<br/>"; 31 32 $g = "123.9abc"; 33 settype($g, "NULL"); 34 var_dump($g); //null 35 echo "<br/>"; 36 ?>
输出:
1 D:wampServerwwwApache服务器主目录practise例程.php:4:boolean true 2 3 D:wampServerwwwApache服务器主目录practise例程.php:9:int 123 4 5 D:wampServerwwwApache服务器主目录practise例程.php:14:float 123.9 6 7 D:wampServerwwwApache服务器主目录practise例程.php:19:string '123.9abc' (length=8) 8 9 D:wampServerwwwApache服务器主目录practise例程.php:24: 10 array (size=1) 11 0 => string '123.9abc' (length=8) 12 13 D:wampServerwwwApache服务器主目录practise例程.php:29: 14 object(stdClass)[1] 15 public 'scalar' => string '123.9abc' (length=8) 16 17 D:wampServerwwwApache服务器主目录practise例程.php:34:null