PHP支持8种原始数据类型。 

四种标量类型: 
◦ boolean(布尔型)  
◦ integer(整型)  
◦ float(浮点型,也称作 double)  
◦ string(字符串)  

两种复合类型: 
◦ array(数组)  
◦ object(对象)  

最后是两种特殊类型: 
◦ resource(资源)  
◦ NULL(无类型)  

为了确保代码的易读性,还有一些伪类型: 
◦ mixed(混合类型)  
◦ number(数字类型)  
◦ callback(回调类型)  
伪变量 $...

      变量的类型通常不是由程序员设定的,确切地说,是由PHP根据该变量使用的上下文在运行时决定的。
      如果想查看某个表达式的值和类型,用 var_dump() 函数。如果只是想得到一个易读懂的类型的表达方式用于调试,用 gettype() 函数。要查看某个类型,不要用 gettype(),而用 is_type 函数。如果要将一个变量强制转换为某类型,可以对其使用强制转换或者 settype() 函数。

【boolean】
      要指定一个布尔值,使用关键字 TRUE 或 FALSE。两个都不区分大小写。 
转换为布尔值 
      要明确地将一个值转换成 boolean,用 (bool) 或者 (boolean) 来强制转换。
当转换为 boolean 时,以下值被认为是 FALSE:
◦ 布尔值 FALSE 本身  
◦ 整型值 0(零)  
◦ 浮点型值 0.0(零)  
◦ 空字符串,以及字符串 "0"  
◦ 不包括任何元素的数组  
◦ 不包括任何成员变量的对象(仅 PHP 4.0 适用)  
◦ 特殊类型 NULL(包括尚未赋值的变量)  
◦ 从空标记生成的 SimpleXML 对象 

【integer】
      整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(- 或者 +)。 
0(零)。要使用十六进制表达,数字前必须加上 0x。要使用二进制表达,数字前必须加上 0b。 
PHP_INT_MAX 来表示。 
      如果给定的一个数超出了 integer 的范围,将会被解释为 float。同样如果执行的运算结果超出了 integer 范围,也会返回 float。
1/2 产生出 float 0.5。值可以舍弃小数部分强制转换为 integer,或者使用 round() 函数可以更好地进行四舍五入。 
转换为整型
      要明确地将一个值转换为 integer,用 (int) 或 (integer) 强制转换。

【float】
floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999999991118...。
      所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。 

【NULL】
      特殊的 NULL 值表示一个变量没有值。NULL 类型唯一可能的值就是 NULL。 
在下列情况下一个变量被认为是 NULL: 
◦ 被赋值为 NULL。
◦ 尚未被赋值。 
◦ 被 unset()。 

【类型转换的判别】
允许的强制转换有: 
◦ (int), (integer) - 转换为整形 integer 
◦ (bool), (boolean) - 转换为布尔类型 boolean 
◦ (float), (double), (real) - 转换为浮点型 float 
◦ (string) - 转换为字符串 string 
◦ (array) - 转换为数组 array 
◦ (object) - 转换为对象 object 
◦ (unset) - 转换为 NULL (PHP 5) 

【Variable handling 函数】
•boolval — Get the boolean value of a variable
•debug_zval_dump — Dumps a string representation of an internal zend value to output
•doubleval — floatval 的别名
•empty — 检查一个变量是否为空
•floatval — 获取变量的浮点值
•get_defined_vars — 返回由所有已定义变量所组成的数组
•get_resource_type — 返回资源(resource)类型
•gettype — 获取变量的类型
•import_request_variables — 将 GET/POST/Cookie 变量导入到全局作用域中
•intval — 获取变量的整数值
•is_array — 检测变量是否是数组
•is_bool — 检测变量是否是布尔型
•is_callable — 检测参数是否为合法的可调用结构
•is_double — is_float 的别名
•is_float — 检测变量是否是浮点型
•is_int — 检测变量是否是整数
•is_integer — is_int 的别名
•is_long — is_int 的别名
•is_null — 检测变量是否为 NULL
•is_numeric — 检测变量是否为数字或数字字符串
•is_object — 检测变量是否是一个对象
•is_real — is_float 的别名
•is_resource — 检测变量是否为资源类型
•is_scalar — 检测变量是否是一个标量
•is_string — 检测变量是否是字符串
•isset — 检测变量是否设置
•print_r — 打印关于变量的易于理解的信息。
•serialize — 产生一个可存储的值的表示
•settype — 设置变量的类型
•strval — 获取变量的字符串值
•unserialize — 从已存储的表示中创建 PHP 的值
•unset — 释放给定的变量
•var_dump — 打印变量的相关信息

•var_export — 输出或返回一个变量的字符串表示


<?php
// boolean
$bFlag = true;
if($bFlag)
{
echo '变量$bFlag为真'.'<br>';
}
else
{
echo '变量$bFlag为假'.'<br>';
}

// integer
$iVal = 12345678;
echo '十进制的结果'.$iVal.'<br>';

$a1 = 1234; // 十进制数
$a2 = -123; // 负数
$a3 = 0123; // 八进制数 (等于十进制 83)
$a4 = 0x1A; // 十六进制数 (等于十进制 26)

$large_number = 2147483647;
echo var_dump($large_number).'<br>';

var_dump(25/7); // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)

// float
$fVal = 3.141592653;
echo '变量$fVal的值是'.$fVal.'<br>';

// null
$str1 = null;
$str2 = 'str';
if(is_null($st1))
{
echo '$str1为null'.'<br>';
}

// 调试某个类型
echo gettype($str2).'<br>';
if(is_string($str2))
{
echo '$str2为string类型'.'<br>';
}

// 销毁对象
unset($str2);
if(is_null($st1))
{
echo '$str2为null'.'<br>';
}

?>