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);  // 是否"空"
相关推荐
朱涛的自习室8 小时前
70 美金的 Beyond Compare,我让 Gemini 4 和 DeepSeek 造个开源免费版(Day 2)
android·前端·人工智能
死磕音视频9 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
北京中科新远科技10 小时前
高速光模块上线验收实战:DOM、FEC、BER与端口计数器怎么一起看
服务器·网络·php
顽疲11 小时前
Java vue 养老系统源码详解:月账单 care_month_bill 与 Quartz 扣费 Job 实践
java·开发语言·vue.js·vue养老·springboot养老·java养老
Wang's Blog11 小时前
Java 项目实战: 交友项目 - 安装开发工具与环境准备
java·开发语言·交友
.Bryce.12 小时前
在智能体中使用A2A工具:让大模型自己决定“该找谁帮忙“
android·java·服务器·redis·后端·agent·a2a
方舟小孩13 小时前
开源办公软件海豹办公 1.9.15 实战 从模板异常到 Android WebView 资源回归
android
用户21816970493013 小时前
Kotlin 语法四 协程
android
程序喵大人13 小时前
【C++入门】编译链接模型 - 07 链接器怎样把符号对上号
开发语言·c++·编译器·编译链接·链接器
出师牛13 小时前
Android - 再探Handler
android