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);  // 是否"空"
相关推荐
qq_589568107 分钟前
java基础学习,案例练习,即时通讯
java·开发语言·学习
DevilSeagull17 分钟前
Windows 批处理 (Batch) 编程: 从入门到入土. (一) 基础概念与环境配置
开发语言·windows·后端·batch·语言
AI科技星22 分钟前
全域数学·第卷:场计算机卷(场空间计算机)【乖乖数学】
java·开发语言·人工智能·算法·机器学习·数学建模·数据挖掘
诸神黄昏EX24 分钟前
Android Google KEY
android
charlie11451419129 分钟前
嵌入式C++实践开发第21篇(单片机实践):按钮输入 —— 硬件原理、消抖与HAL API
开发语言·c++·单片机
一起搞IT吧30 分钟前
Android性能系列专题理论之十一:block IO问题分析思路
android·嵌入式硬件·智能手机·性能优化
前端老石人30 分钟前
前端开发中的 URL 完全指南
开发语言·前端·javascript·css·html
0xDevNull32 分钟前
Java泛型详解
java·开发语言·后端
yeeanna33 分钟前
GO函数的特殊性
开发语言·后端·golang
AI科技星37 分钟前
《全域数学》第三卷:代数原本 · 全书详述【乖乖数学】
开发语言·人工智能·机器学习·数学建模