接下来,我想继续说说类型强制转换的问题。这部分和C++中有些相似,下面的这张表总结了类型转换的操作符。
转换操作符 | 转换为 |
(array) | 数组 |
(bool)或(boolean) | 布尔型 |
(int)或(integer) | 整数 |
(object) | 对象 |
(real)或(double)或(float) | 浮点数 |
(string) | 字符串 |
有如下这些例子:
$score = (double) 13; // $score = 13.0 $score = (int) 14.8; //$score = 14 $sentence = "This is a sentence"; echo (int) $sentence; //returns 0
当然我们还可以将一个数据类型强制转换为数组中的一个成员。所转换的值将成为数组中的第一个成员:
$score = 1114; $scoreboard = (array) $score; echo $scoreboard[0];//Outputs 1114
注意不能把这个作为向数组增加项的标准做法,因为这只适合新创建数组的第一个成员。如果强制转换到一个已经存在的数组,原数组将清空,只是在第一个位置上保留这个新转换的值。关于创建数组的更多信息将在后面的章节里说明。
最后再举一个例子:任何数据类型都可以转换为对象。结果是该变量成为了对象的一个属性,该属性名为scalar,然后可以用以下的方式引用:
$model = "Toyota"; $obj = (object)$model; print $obj->scalar;// returns "Toyota"
接下来我们说说类型自动转换的内容,还是有如下例子
1.在这里$count的变量从字符串已经被转换为整型了。
<?php $total = 5; //an integer $count = "15"; //a string $total += $count; //$total =20 (an integer) ?>
2.因为最前面的$total字符串以整数开头,所以就计算了这个值,但如果这个是非数字开头,值就为零了。
<?php $total = "45 fire engines"; $incoming =10; $total =$incoming +$total; //$total =55 ?>
3.在这里,为了计算if语句的值,字符串变为了boolean型了。
<?php $total = "1.0"; if ($total) echo "We're the same."; ?>
4.另外如果字符串中还有如科学计数法表示的数字的形式,php就会把它认为浮点数进行计算。
<?php $val1 = "1.2e3"; //1200 $val2 = 2; echo $val1*$val2; // outputs 2400 ?>