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; // 布尔值
?>
TipPHP 会根据赋值自动判断类型,但你应该清楚每种类型的特点,写代码时少踩坑。
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)
布尔值只有两个:true 和 false:
<?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 的三个特征:
- 没有值
- 不是字符串、不是整数、不是任何其他类型
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"
?>
NotePHP 8.0 起,
get_debug_type()返回更精确的类型名(如"int"而非"integer","bool"而非"boolean")。
来源:参考了 w3cschool「PHP 数据类型」、runoob「PHP 数据类型」以及 php.net 官方文档,综合改写后所得。