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() | 字符串转时间戳 |