PHP:内置的数据类型

PHP具有以下几种内置的数据类型:

一、标量数据类型

1. 整数(Integer)类型

整数类型用于表示整数值。在PHP中,整数可以是十进制(默认)、十六进制(以0x开头)或者八进制(以0开头,但要注意在PHP 8.1.0起八进制表示法如果数字中包含8或9会产生解析错误)。

$dec = 985;    // 十进制
$hex = 0x1A;   // 十六进制,等于十进制的26。
$oct = 012;    // 八进制,等于十进制的10。

整数的取值范围取决于服务器的操作系统和PHP的编译选项,在32位系统中,带符号整数的范围通常是: - 2147483648 到 2147483647。

2. 浮点数(Float)或双精度(Double)类型

浮点数用于表示带有小数部分的数值,例如:$float = 3.14;。

浮点数的精度有限,可能会存在舍入误差。

$a = 0.1;
$b = 0.2;
$c = $a + $b;
echo $c; // 可能输出0.30000000000000004而不是精确的0.3

3. 字符串(String)类型

字符串是一系列字符的序列,可以使用单引号或者双引号来定义。

单引号字符串:内容会被直接解析,变量不会被替换,只有转义字符(如')会被解析。

$str1 = 'Hello, World!';

双引号字符串:变量会被替换为其值,并且可以使用更多的转义字符。

$name = "John"; 
$str2 = "Hello, $name!";

还可以使用定界符(<<<)来定义字符串,这种方式在定义较长的字符串时比较方便。

$str3 = <<<EOT
This is a long string.
It can span multiple lines.
EOT;

4. 布尔(Boolean)类型

布尔类型只有两个值:true(真)和false(假)。

布尔值通常用于条件判断,例如:

$isTrue = true;
if ($isTrue) {
    echo "This is true";
}

很多表达式都会返回布尔值,例如比较操作(==、>、<等),逻辑操作(&&、||等)。

二、复合数据类型

1. 数组(Array)类型

数组是一种可以存储多个值的数据结构。

索引数组:数组中的元素通过数字索引来访问,索引从0开始。


$arr = array(1, 2, 3);
echo $arr[0];

可以通过$arr[0]访问第一个元素1。

关联数组:数组中的元素通过键 - 值对的形式存储,键可以是字符串或数字。

$assocArr = array('name' => 'John', 'age' => 30);

可以通过$assocArr['name']访问'John'这个值。

多维数组:数组中的元素可以是数组,从而形成多维数组。

$multiArr = array(
    array(1, 2),
    array(3, 4)
);

可以通过$multiArr[0][0]访问值1。

2. 对象(Object)类型

对象是类的实例。首先需要定义一个类,然后可以创建该类的对象。

class MyClass {
    public $property;
    public function myMethod() {
        // 方法体
    }
}
$obj = new MyClass();
$obj->property = "Hello";
$obj->myMethod();

三、特殊数据类型

1. 资源(Resource)类型

资源类型用于表示外部资源,如数据库连接、文件句柄等。

打开一个文件并得到文件句柄(资源):

$file = fopen('test.txt', 'r');
// $file是一个资源类型变量

资源在使用完毕后通常需要进行释放(如关闭文件句柄、断开数据库连接等),以避免资源泄露。

2. 空值(NULL)类型

空值表示变量没有值。可以将变量显式地设置为NULL,例如:$var = NULL;。

当一个变量未被赋值时,它的值默认是NULL。

$unassigned;
if ($unassigned === NULL) {
    echo "The variable is unassigned";
}

PHP编程语言基础