2008年8月18日星期一

Type Casting in PHP

PHP 中的类型声明


允许的声明有:


  • (int), (integer) - cast to integer

  • (bool), (boolean) - cast to boolean

  • (float), (double), (real) - cast to float

  • (string) - cast to string

  • (binary) - cast to binary string (PHP 6)

  • (array) - cast to array

  • (object) - cast to object

  • (unset) - cast to NULL (PHP 5)


一些有用(有趣)的特性:
(bool),(boolean), 当然,这个通常不用去显示声明,在需要的时候自动会转换。这里要说的是值如何转换:

  • 布尔值FALSE本身

  • 整数 0 (零)

  • 浮点数 0.0 (零)

  • 空字符串 '' 和 字符串 '0' (零)

  • 空数组(没有任何元素的数组)

  • 没有任何成员的对象(仅 PHP 4)

  • 特殊类型 NULL (包括 unset 的变量)

  • 从空标记创建的 SimpleXML 对象 (也就是不会有任何节点)


除此以外的任何值都是 TRUE

(string), 用于对象时,会调用对象的 __toString() 魔术方法(PHP5.2+可以正确调用, 更早版本不会)
(object), 用于数组时,可以把数组转化为对象,键作为对象的属性

$foo = array('bar' => 'foobar');
var_dump((object)$foo);

//输出
object(stdClass)#1 (1) {
["bar"]=> string(6) "foobar"
}


(array), 作用于对象时

$foo = new stdClass();
$foo->bar = 'foobar';
var_dump((array)$foo);

//输出
array(1) {
["bar"]=> string(6) "foobar"
}