跳到主要内容

PHP 数据类型

PHP 提供了 8 种类型的值。标量型 4 种,复合类型 2 种,特殊类型 2 种;

标量型

1. 整型

1
2
3
456
-789
+1234
0b10 // 二进制。十进制 2
020 // 八进制。十进制 17
0xFF // 十六进制。十进制 255

// 测试是否是整型
if (is_int($x)) {
// $x 是整型
}

2. 浮点数

1.732
0.001
-0.125
8.256E1
16.0E-5

// 测试浮点型相等到3位精度
if (intval($a * 1000) == intval($b * 1000)) {
// 匹配前3位数字
}

// 测试是否是浮点型
if (is_float($x)) {
// $x 是浮点型
}

3. 字符串

双引号会被解析,单引号不会被解析。

'hot dog'
"GEM"
"Egypt"

// 测试两个字符串是否相等
if ($a == $b) {
echo "a 和 b 相等"
}

// 测试是否是字符串
if (is_string($x)) {
// $x 是字符串
}

转义

转移序列表示的字符
"双引号
\n换行符
\r回车符
\t制表符
\反斜杠
$美元符号
{左大括号
}右大括号
[左中括号
]右中括号
\0到\777用八进制表示的ASCII码
\x0到\xFF用十六进制表示的ASCII码

4. 布尔型

一个值如果不是真,那么它就是假

true
false

// 测试是否是布尔值
if (is_bool($x)) {
// $x 是一个布尔型
}

PHP 中,以下值的结算结果为 false

  • false
  • 整形0
  • 浮点数0.0
  • 空字符串 "" 和字符串 "0"
  • 空数组
  • NULL值

复合类型

5. 数组

数组是一组值,这些值由位置或标识性的名称字符串来确定,也称为关联索引。

数组是 PHP 灵活性的来源之一。


$old_world[0] = "美索不达米亚";
$old_world[1] = "古埃及";
$old_world[2] = "古印度";
$old_world[3] = "中国";

$old_world_en = array(
'first_line' => "Mesopotamia",
'second_line' => "Ancient Egypt",
'third_line' => "Ancient India",
'fourth_line' => "China"
);

// 遍历数组
foreach ($old_world as $civilization) {
echo "Hello, {$civilization}<br/>";
}

// 遍历数组(带key)
foreach ($old_world_en as $index => $civilization) {
echo "Hello, the {$index} is {$civilization}.<br/>";
}

// 可用 sort 排序
sort($old_world)

// 测试是否是数组
if (is_array($x)) {
// $x 是一个数组
}

6. 对象

PHP 也支持面向对象编程。具体的,支持 OOP 设计和 OOP 实现。


class User
{
public $name = '';
function name($newname=NULL)
{
if (!is_null($newname)) {
$this->name = $newname;
}
return $this->name;
}
}

$user1 = new User;
$user1->name('likun');
echo "Hello, {$user1->name} <br />";


// 测试是否是对象
if (is_object($x)) {
// $x 是一个对象
}

特殊类型

7. 资源


$res = databse_connect();
database_query($res);

// 资源一般用关闭和结束函数显式关闭,当资源重定义时也会关闭
$res = 'other_thing';

// 测试是否是资源
if (is_resource($x)) {
// $x 是资源
}

回调

回调可以通过 create_function() 方法或闭包创建,后续会展开。

8. NULL

NULL 类型只有一个值,就是 null,null 值不区分大小写,表示一个变量没有值。


// 测试是否是NULL
if (is_null($x)) {
// $x 是 NULL
}