跳到主要内容

PHP 知识速查表

本页面汇总了 PHP 编程中最常用的语法和知识点,方便快速查阅。

基本语法

PHP 标记

<?php
// 标准标记(推荐)
echo "Hello World";
?>

<?= "Hello" ?> <!-- 短输出标记 -->

// 注释
// 单行注释
# 单行注释(不推荐)
/* 多行注释 */
/** 文档注释 */

变量

$name = "张三";           // 字符串
$age = 25; // 整数
$price = 19.99; // 浮点数
$isActive = true; // 布尔值
$items = [1, 2, 3]; // 数组
$user = new User(); // 对象
$value = null; // 空值

// 变量变量
$$name = "value"; // $张三 = "value"

常量

define("MAX_SIZE", 1024);        // 运行时定义
const VERSION = "1.0.0"; // 编译时定义

// 魔术常量
__LINE__ // 当前行号
__FILE__ // 当前文件路径
__DIR__ // 当前目录
__FUNCTION__ // 函数名
__CLASS__ // 类名
__METHOD__ // 方法名
__NAMESPACE__ // 命名空间

数据类型

标量类型

// 整数
$decimal = 42;
$hex = 0x2A; // 十六进制
$octal = 052; // 八进制
$binary = 0b101010; // 二进制

// 浮点数
$float = 3.14;
$scientific = 1.5e3; // 科学计数法

// 字符串
$single = 'Hello';
$double = "Hello $name";
$heredoc = <<<EOD
多行字符串
EOD;
$nowdoc = <<<'EOD'
不解析变量 $name
EOD;

// 布尔值
$true = true;
$false = false;

复合类型

// 数组
$indexed = [1, 2, 3];
$assoc = ["name" => "张三", "age" => 25];
$multi = [[1, 2], [3, 4]];

// 对象
$obj = new stdClass();
$obj->name = "张三";

类型转换

(int) "123"        // 123
(float) "3.14" // 3.14
(string) 123 // "123"
(bool) 1 // true
(array) "hello" // ["hello"]

intval("123") // 123
strval(123) // "123"
boolval(1) // true

运算符

算术运算符

$a + $b    // 加法
$a - $b // 减法
$a * $b // 乘法
$a / $b // 除法
$a % $b // 取余
$a ** $b // 幂运算

比较运算符

$a == $b    // 值相等
$a === $b // 值和类型相等
$a != $b // 值不等
$a !== $b // 值或类型不等
$a > $b // 大于
$a < $b // 小于
$a >= $b // 大于等于
$a <= $b // 小于等于
$a <=> $b // 太空船运算符(-1, 0, 1)

逻辑运算符

$a && $b    // 与
$a || $b // 或
!$a // 非
$a and $b // 与(低优先级)
$a or $b // 或(低优先级)
$a xor $b // 异或

其他运算符

$a ?? $b          // null 合并
$a ??= $b // null 合并赋值
$a ? $b : $c // 三元
$a ?: $b // 简写三元
$a?->b // nullsafe(PHP 8.0+)

控制流

条件语句

if ($condition) {
// ...
} elseif ($condition2) {
// ...
} else {
// ...
}

switch ($value) {
case 1:
echo "One";
break;
default:
echo "Other";
}

// PHP 8.0+ match
$result = match($value) {
1, 2 => "Small",
3, 4 => "Medium",
default => "Large"
};

循环语句

while ($condition) { /* ... */ }
do { /* ... */ } while ($condition);
for ($i = 0; $i < 10; $i++) { /* ... */ }
foreach ($arr as $value) { /* ... */ }
foreach ($arr as $key => $value) { /* ... */ }

break; // 跳出循环
continue; // 跳过本次迭代

函数

基本函数

function greet(string $name): string {
return "Hello, $name";
}

// 默认参数
function create($name, $age = 18) {}

// 可变参数
function sum(...$numbers) {
return array_sum($numbers);
}

// 命名参数(PHP 8.0+)
greet(name: "张三");

箭头函数

$square = fn($n) => $n * $n;
$double = fn($n) => $n * 2;

// 自动捕获外部变量
$multiplier = 10;
$multiply = fn($n) => $n * $multiplier;

类型声明

function process(
int $id,
string $name,
?string $email = null, // 可空
): array|false { // 联合类型(PHP 8.0+)
return [];
}

// 返回类型
function voidFunc(): void {} // 无返回值
function neverFunc(): never {} // 永不返回(PHP 8.1+)

数组

创建数组

$indexed = [1, 2, 3];
$assoc = ["name" => "张三", "age" => 25];
$empty = [];

数组操作

// 访问
$arr[0];
$arr["name"];

// 添加
$arr[] = "value";
array_push($arr, "value");

// 删除
unset($arr[0]);
array_pop($arr);
array_shift($arr);

// 合并
$merged = array_merge($a, $b);
$merged = [...$a, ...$b]; // PHP 7.4+

数组函数

count($arr)                    // 元素数量
in_array($value, $arr) // 检查值
array_key_exists($key, $arr) // 检查键
array_keys($arr) // 所有键
array_values($arr) // 所有值
array_flip($arr) // 键值互换
array_reverse($arr) // 反转
array_unique($arr) // 去重
array_filter($arr, $callback) // 过滤
array_map($callback, $arr) // 映射
array_reduce($arr, $callback) // 归约
sort($arr) // 排序

字符串

字符串操作

strlen($str)                   // 字节长度
mb_strlen($str) // 字符长度
strpos($str, $search) // 查找位置
substr($str, $start, $length) // 截取
str_replace($search, $replace, $str) // 替换
explode(",", $str) // 分割
implode(",", $arr) // 连接
trim($str) // 去空白
strtolower($str) // 小写
strtoupper($str) // 大写
ucfirst($str) // 首字母大写
ucwords($str) // 每词首字母大写

字符串格式化

sprintf("%s %d", "Age:", 25)   // "Age: 25"
printf("%s %d\n", "Age:", 25) // 输出
number_format(1234567.89, 2) // "1,234,567.89"

面向对象

类定义

class User {
public string $name;
protected int $age;
private string $email;

public function __construct(string $name) {
$this->name = $name;
}

public function greet(): string {
return "Hello, " . $this->name;
}

public static function create($name): self {
return new self($name);
}
}

继承

class Admin extends User {
public function __construct(string $name) {
parent::__construct($name);
}

final public function getRole(): string {
return "admin";
}
}

接口和 Trait

interface Authenticatable {
public function login(): void;
}

trait Loggable {
public function log($message) {
echo $message;
}
}

class User implements Authenticatable {
use Loggable;
}

异常处理

try {
throw new Exception("Error");
} catch (Exception $e) {
echo $e->getMessage();
} finally {
// 清理
}

// 自定义异常
class ValidationException extends Exception {}

数据库(PDO)

// 连接
$pdo = new PDO("mysql:host=localhost;dbname=test", "user", "pass");

// 查询
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([1]);
$user = $stmt->fetch();

// 插入
$stmt = $pdo->prepare("INSERT INTO users (name) VALUES (?)");
$stmt->execute(["张三"]);
$id = $pdo->lastInsertId();

// 事务
$pdo->beginTransaction();
try {
// 操作...
$pdo->commit();
} catch (Exception $e) {
$pdo->rollBack();
}

会话

session_start();

$_SESSION['user'] = "张三";
echo $_SESSION['user'];

session_destroy();

文件操作

// 读写
$content = file_get_contents("file.txt");
file_put_contents("file.txt", "content");

// 文件信息
file_exists("file.txt");
filesize("file.txt");
is_file("file.txt");
is_dir("dir");

// 目录
mkdir("dir");
rmdir("dir");
scandir("dir");

JSON

$json = json_encode($data, JSON_UNESCAPED_UNICODE);
$data = json_decode($json, true); // 关联数组
$data = json_decode($json); // 对象

安全

// XSS 防护
htmlspecialchars($input, ENT_QUOTES, 'UTF-8');

// SQL 注入防护
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$id]);

// CSRF Token
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
hash_equals($_SESSION['csrf_token'], $_POST['token']);

// 密码哈希
$hash = password_hash($password, PASSWORD_DEFAULT);
password_verify($password, $hash);

命名空间

namespace App\Models;

use App\Services\UserService;

class User {
// 完整类名:App\Models\User
}

PHP 8 新特性

// 命名参数
create(name: "张三", age: 25);

// 注解
#[Route("/users")]
class UserController {}

// 构造器属性提升
class User {
public function __construct(
public string $name,
public int $age
) {}
}

// match 表达式
$status = match($code) {
200 => "OK",
404 => "Not Found",
default => "Unknown"
};

// nullsafe 运算符
$name = $user?->profile?->name;

// 枚举(PHP 8.1+)
enum Status {
case Pending;
case Active;
}

// readonly 属性(PHP 8.1+)
class User {
public readonly string $name;
}

常用函数速查

函数用途
var_dump()打印变量信息
print_r()打印数组
die()终止脚本
exit()退出脚本
isset()检查变量是否设置
empty()检查是否为空
is_null()检查是否为 null
gettype()获取类型
settype()设置类型
define()定义常量
defined()检查常量是否存在
eval()执行字符串代码
sleep()暂停执行
time()当前时间戳
date()格式化日期
strtotime()字符串转时间戳