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);  // 是否"空"
相关推荐
睡美人的小仙女1274 小时前
Threejs加载环境贴图报错Bad File Format: bad initial token
开发语言·javascript·redis
rayufo4 小时前
【工具】列出指定文件夹下所有的目录和文件
开发语言·前端·python
STCNXPARM4 小时前
Android camera之硬件架构
android·硬件架构·camera
RANCE_atttackkk4 小时前
[Java]实现使用邮箱找回密码的功能
java·开发语言·前端·spring boot·intellij-idea·idea
缺点内向5 小时前
C#编程实战:如何为Word文档添加背景色或背景图片
开发语言·c#·自动化·word·.net
一起养小猫5 小时前
Flutter for OpenHarmony 实战:记账应用数据统计与可视化
开发语言·jvm·数据库·flutter·信息可视化·harmonyos
zhougl9965 小时前
Java 所有关键字及规范分类
java·开发语言
java1234_小锋5 小时前
Java高频面试题:MyISAM索引与InnoDB索引的区别?
java·开发语言
2501_944525546 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 支出分析页面
android·开发语言·前端·javascript·flutter
qq_417129256 小时前
C++中的桥接模式变体
开发语言·c++·算法