下面我用**"体系化 + 面试/实战导向"的方式,把 PHP 的变量、数据类型、运算符一次性给你梳理清楚,适合作为核心基础知识笔记**。
一、PHP 变量(Variables)
1️⃣ 变量基本规则
php
$a = 10;
$name = "Tom";
规则:
- 必须以
$开头 - 区分大小写:
$a≠$A - 变量名:字母 / 下划线开头,不能数字开头
- 不需要提前声明类型(弱类型)
2️⃣ 变量的动态类型特性(重点)
php
$a = 10; // int
$a = "abc"; // string
$a = true; // bool
PHP 是 动态 + 弱类型语言
- 类型由值决定
- 可自动类型转换
3️⃣ 引用变量(&)
php
$a = 10;
$b = &$a;
$a = 20;
echo $b; // 20
应用场景:
- 函数参数传引用
- 大数组避免拷贝
- 特殊性能优化
4️⃣ 可变变量(了解)
php
$a = "name";
$$a = "Tom";
echo $name; // Tom
⚠️ 实际项目中慎用,可读性差
二、PHP 数据类型(Types)
1️⃣ 标量类型(4 个)
① 整型(int)
php
$a = 100;
$b = 0xFF; // 255
② 浮点型(float / double)
php
$price = 10.5;
⚠️ 浮点精度问题
php
var_dump(0.1 + 0.2); // 0.30000000000000004
👉 金额计算建议用 整数(分)
③ 字符串(string)
php
$str1 = "hello";
$str2 = 'world';
区别:
- 双引号:解析变量 / 转义字符
- 单引号:原样输出
php
$name = "Tom";
echo "Hi $name"; // Hi Tom
④ 布尔型(bool)
php
$flag = true;
为 false 的值:
false00.0"""0"null[]
2️⃣ 复合类型(2 个)
① 数组(array)
php
$arr = [1, 2, 3];
$user = ["name" => "Tom", "age" => 18];
- 索引数组
- 关联数组
- 混合数组
② 对象(object)
php
class User {
public $name;
}
$u = new User();
$u->name = "Tom";
3️⃣ 特殊类型(2 个)
① NULL
php
$a = null;
② 资源(resource)
php
$fp = fopen("a.txt", "r");
4️⃣ 类型检测与转换(重点)
类型检测函数
php
is_int($a);
is_string($a);
is_array($a);
is_null($a);
类型转换
php
(int)"123"; // 123
(float)"3.14";
(string)100;
(bool)0; // false
三、PHP 运算符(Operators)
1️⃣ 算术运算符
php
+ - * / %
php
$a = 10;
$b = 3;
echo $a % $b; // 1
2️⃣ 赋值运算符
php
= += -= *= /= .=
php
$str = "Hello";
$str .= " World";
3️⃣ 比较运算符(重点)
| 运算符 | 说明 |
|---|---|
== |
值相等 |
=== |
值 + 类型相等 |
!= |
不等 |
!== |
值或类型不等 |
< > <= >= |
大小比较 |
面试必考
php
var_dump(0 == "0"); // true
var_dump(0 === "0"); // false
👉 强烈建议用 ===
4️⃣ 逻辑运算符
php
&& || !
and or xor
⚠️ 优先级差异:
php
$a = true;
$b = false;
var_dump($a && $b); // false
var_dump($a and $b); // false(但优先级不同)
👉 项目中只用 && ||
5️⃣ 自增 / 自减
php
$i++;
++$i;
区别
php
$i = 1;
echo $i++; // 1
echo ++$i; // 3
6️⃣ 字符串运算符(PHP 特有)
php
. .=
7️⃣ 三元运算符
php
$result = $a > 10 ? "yes" : "no";
空合并运算符(PHP 7+)
php
$name = $_GET['name'] ?? 'guest';
8️⃣ 错误抑制符(不推荐)
php
@$a = 10 / 0;
❌ 生产环境禁止使用
9️⃣ 位运算符(了解)
php
& | ^ ~ << >>
常见于:
- 权限系统
- 标志位存储
四、必会"坑点总结"(面试 + 实战)
1️⃣ == 的坑
php
"123abc" == 123 // true
👉 永远用 ===
2️⃣ 空字符串 / 0 / null
php
empty(0); // true
empty("0"); // true
3️⃣ isset vs empty
php
isset($a); // 是否存在
empty($a); // 是否"空"