类型转换的判别

PHP 在变量定义中不需要或不支持明确的类型定义。变量类型是根据使用该变量的上下文所决定的。也就是说,如果把一个字符串值赋给一个变量,这个变量就成了一个字符串。如果又把一个整型赋给这个变量,那它就成了一个整型。PHP 的自动类型转换的一个例子是乘法运算符 * 。如果任何一个操作数是浮点型,则所有的操作数都被当成浮点型,结果也是浮点型。

<?php

$foo = 2;
$foo *= 1.3;
var_dump($foo); // float(2.6)

否则操作数会被解释为整型,结果也是整型。注意这并没有改变这些操作数本身的类型,改变的仅是这些操作数如何被求值以及表达式本身的类型。

<?php

$foo = '2';
$foo *= 2;
var_dump($foo); // int(4)

当一个字符串被当作一个数值来取值,如果该字符串没有包含 .eE 并且其数字值在整型的范围之内,该字符串将被当成整型来取值。其它所有情况下都被作为浮点型来取值。该字符串的开始部分决定了它的值。如果该字符串以合法的数值开始,则使用该数值。否则其值为 0 。合法数值由可选的正负号,后面跟着一个或多个数字,可能有小数点,再跟着可选的指数部分。指数部分由 eE 后面跟着一个或多个数字构成。

<?php

$foo = 5 * '10foo';
var_dump($foo); // int(50)

results matching ""

    No results matching ""