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);  // 是否"空"
相关推荐
问心无愧051312 小时前
ctf show web入门107
android·前端·笔记·android studio
就叫_这个吧12 小时前
Java使用tomcat+servlet+filter实现简单的登录功能,需先登录再进行页面数据管理操作
java·开发语言·servlet·tomcat·jsp·filter
dtq042412 小时前
C语言刷题函数2 - 用函数实现数组操作
c语言·开发语言
川石课堂软件测试12 小时前
UI自动化测试|下拉选择框&弹出框&滚动条操作实践
开发语言·python·jmeter·ui·docker·单元测试·harmonyos
十五年专注C++开发12 小时前
ANTLR4: CORBA IDL、C++ 语法文件分析利器
java·开发语言·c++·antlr4
AI科技星12 小时前
第三卷:质数王朝志 第四章:RSA护国玄阵,质数锁天地,一数镇万法
android·人工智能·架构·概率论·学习方法
Mortalbreeze12 小时前
C++11 ---- 引用折叠、完美转发、可变模板参数、emplace系列接口
开发语言·c++
星恒随风12 小时前
C++ 内存管理详解:从内存分区、malloc/free 到 new/delete
开发语言·c++·笔记·学习
object not found12 小时前
Node.js fs 常用 API 整理:node:fs/promises、node:fs、fs 到底怎么用
开发语言·前端·javascript