PHP 变量、类型、运算符

下面我用**"体系化 + 面试/实战导向"的方式,把 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 的值:

  • false
  • 0
  • 0.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);  // 是否"空"
相关推荐
Scott9999HH5 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
码智社6 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海6 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖7 小时前
JDK 26 新特性详解
java·开发语言
马优晨8 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
人邮异步社区9 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大10 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai10 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
এ慕ོ冬℘゜10 小时前
前端基础:什么是时间戳?JS获取时间戳三种方法与实战用途
开发语言·前端·javascript
执明wa10 小时前
LayoutInflater详解: XML是如何变成View的?
android·xml·开发语言·android studio