首页 / PHP 入门教程 / PHP 数据类型(上)

PHP 入门教程

PHP 数据类型(上)

本教程共 65 篇 · 第 6 篇 · 更新于 2026-07-24 · 约 4 分钟阅读

PHPPHP8数据类型字符串整数浮点数布尔值

6. PHP 数据类型(上)

本节目标:掌握字符串、整数、浮点数、布尔值和 NULL 的用法。学完你能正确声明和使用基础数据类型。

6.1 PHP 是弱类型语言

PHP 不需要事先声明变量类型,赋值时自动确定:

<?php
$name = "张三";      // 字符串
$age = 25;           // 整数
$price = 19.99;      // 浮点数
$isValid = true;     // 布尔值
?>
Tip

PHP 会根据赋值自动判断类型,但你应该清楚每种类型的特点,写代码时少踩坑。

6.2 字符串(String)

字符串是文本数据,用单引号或双引号包裹:

<?php
$single = 'Hello PHP';
$double = "Hello PHP";

echo $single;  // Hello PHP
echo $double;  // Hello PHP
?>

单引号和双引号有重要区别:

<?php
$name = "PHP";

// 双引号会解析变量和转义字符
$greeting = "Hello, $name!\n第二行";
echo $greeting;

// 单引号不解析变量,转义字符也大多失效
$greeting2 = 'Hello, $name!\n第二行';
echo $greeting2;  // 原样输出 $name 和 \n
?>
Note

单引号解析速度稍快。如果不需要变量替换,优先使用单引号。

6.3 整数(Integer)

整数是没有小数的数字,可以是正数或负数:

<?php
$a = 123;       // 十进制
$b = -45;       // 负数
$c = 0x1A;      // 十六进制(等于十进制 26)
$d = 0b1010;    // 二进制(PHP 7.4+,等于十进制 10)
$e = 0o77;      // 八进制(PHP 8.1+,等于十进制 63)

var_dump($a, $b, $c, $d, $e);
?>

整数的最大值取决于系统(32位或64位):

<?php
echo PHP_INT_MAX;      // 64位系统通常是 9223372036854775807
echo PHP_INT_MIN;      // 64位系统通常是 -9223372036854775808

// 超出范围会自动转为浮点数
$big = PHP_INT_MAX + 1;
var_dump($big);  // float(9.223372036854776E+18)
?>
Tip

var_dump() 是调试利器,它会显示变量的类型和值。

6.4 浮点数(Float)

浮点数是带小数点的数字:

<?php
$a = 1.234;
$b = 1.2e3;     // 科学计数法,等于 1200
$c = 7E-10;     // 等于 0.0000000007

var_dump($a, $b, $c);
?>
Note

浮点数精度有限,永远不要直接比较两个浮点数是否相等

<?php
$a = 0.1 + 0.7;
$b = 0.8;
var_dump($a == $b);  // 可能返回 false!

// 正确做法:比较差值是否在允许范围内
$epsilon = 0.00001;
var_dump(abs($a - $b) < $epsilon);  // true
?>

6.5 布尔值(Boolean)

布尔值只有两个:truefalse

<?php
$isReady = true;
$hasError = false;

var_dump($isReady);   // bool(true)
var_dump($hasError);  // bool(false)
?>

以下值在条件判断中会被视为 false

  • 整数 0
  • 浮点数 0.0
  • 空字符串 "" 和字符串 "0"
  • 空数组 []
  • null

其他值都被视为 true

<?php
$test = "0";
if ($test) {
    echo "true";
} else {
    echo "false";  // 输出这个,因为 "0" 被视为 false
}
?>
Tip

=== 进行严格比较,可以避免隐式类型转换带来的意外。详见第 8 章。

6.6 NULL

null 表示变量没有值:

<?php
$a = null;
$b;            // 未赋值的变量也是 null
unset($c);     // 被 unset 后也是 null

var_dump($a);  // NULL
var_dump($b);  // NULL(会触发警告)
var_dump($c);  // NULL(会触发警告)
?>

null 的三个特征:

  1. 没有值
  2. 不是字符串、不是整数、不是任何其他类型
  3. is_null() 判断为 true
<?php
$x = null;
var_dump(is_null($x));      // true
var_dump(isset($x));        // false,因为 null 不算"已设置且有值"
var_dump(empty($x));        // true,null 被视为空
?>

6.7 检查变量类型

PHP 提供了多种检测函数:

<?php
$var = "123";

var_dump(is_string($var));   // true
var_dump(is_int($var));      // false(它是字符串"123")
var_dump(is_numeric($var));  // true(内容是数字)

$num = 123;
var_dump(gettype($num));     // "integer"

// PHP 8.0+ 新增 get_debug_type()
var_dump(get_debug_type($num));  // "int"
?>
Note

PHP 8.0 起,get_debug_type() 返回更精确的类型名(如 "int" 而非 "integer""bool" 而非 "boolean")。


来源:参考了 w3cschool「PHP 数据类型」、runoob「PHP 数据类型」以及 php.net 官方文档,综合改写后所得。