引言:
PHP 基础语法是编写 PHP 代码的核心规则,涵盖变量、常量、数据类型、运算符、控制结构、函数与超级全局变量等关键内容。本文系统讲解 PHP 的基本语法结构与用法。

PHP 基础语法详解

PHP 的基础语法简单直观,结合了 C、Java 和 Perl 等多种语言的优点,易于理解与上手。掌握这些基础规则,是编写 PHP 代码的第一步。

一、PHP 代码的基本结构

1. PHP 标签:进入“PHP 模式”

PHP 代码必须被特定的起始和结束标签包裹,这样服务器才能识别出需要执行的部分。

1
2
3
4
<?php
// 这里是标准的 PHP 代码块
echo "Hello, World!";
?>

这是一个标准的 PHP 代码块。标签之外的内容会被当作纯 HTML 输出。

2. 一条简单的指令:语句与分号

在 PHP 中,每条指令(语句)都需要以分号 ; 结尾,用以结束当前指令。

1
2
3
4
<?php
echo "第一行输出"; // 有分号,语句正常结束
echo "第二行输出"; // 分号不能少
?>

3. 注释:给代码写“说明书”

注释是代码中不会被执行的文本,用于为代码添加解释或说明。

PHP 支持三种风格的注释:

1
2
3
4
5
6
7
8
9
10
11
<?php
// 这是单行注释,直到行末结束

# 这也是单行注释,是 Perl 风格的

/*
* 这是多行注释
* 可以跨越多行
* 常用于函数或类的说明
*/
?>

二、PHP 变量

1. 变量的声明与命名

在 PHP 中,所有变量都以美元符号 $ 开头,后面紧跟变量名。变量名区分大小写。

1
2
3
4
5
6
<?php
$name = "张三"; // 字符串变量
$age = 25; // 整型变量
$height = 1.75; // 浮点数变量
$isStudent = true; // 布尔变量
?>

变量命名规则

  • 必须以 $ 开头。
  • $ 后面的第一个字符必须是以字母或下划线 _ 开头。
  • 其余字符可以是字母、数字或下划线。
  • 变量名是大小写敏感的。$myVar$myvar 是两个不同的变量。
  • 推荐使用驼峰命名法($myName)或下划线命名法($my_name)。

2. 变量的类型

PHP 是一种弱类型语言,你不需要显式声明变量的类型,类型会根据赋值的值自动确定。

3. 可变变量(Variable Variables)

PHP 支持“可变变量”,允许动态地使用一个变量的值作为另一个变量的名称。

1
2
3
4
5
<?php
$name = "username";
$$name = "admin"; // 等同于 $username = "admin"
echo $username; // 输出 "admin"
?>

4. 变量与引用赋值

除了普通的赋值,PHP 还支持引用赋值,使用 & 符号让两个变量指向同一个值。修改其中一个会同步影响另一个。

1
2
3
4
5
6
<?php
$a = 5;
$b = &$a; // $b 是 $a 的引用
$b = 10; // 修改 $b,$a 也会变为 10
echo $a; // 输出 10
?>

三、数据类型

PHP 的数据类型分为三大类:标量类型复合类型特殊类型

1. 标量类型

类型 说明 示例
bool 布尔值,只有 truefalse $flag = true;
int 整型 $age = 25;
float 浮点数(小数) $price = 19.99;
string 字符串(文本) $name = "张三";

2. 复合类型

类型 说明
array 数组,用于存储多个值的集合
object 对象,类的实例
callable 可调用对象(函数或方法)
iterable 可迭代对象(数组或实现了 Traversable 接口的对象)

3. 特殊类型

类型 说明
null 表示变量没有值
resource 表示外部资源(如数据库连接、文件句柄)

4. 类型检测

使用 var_dump()gettype() 可以查看变量的类型和值:

1
2
3
4
<?php
$var = "Hello";
var_dump($var); // string(5) "Hello"
?>

四、常量

常量是程序中固定不变的值,一旦定义就不能被修改。

1. 定义与使用

使用 define() 函数或 const 关键字可以定义一个常量。

1
2
3
4
5
6
7
8
9
10
<?php
// 使用 define() 函数定义常量
define("SITE_NAME", "我的网站");
define("MAX_USERS", 1000);

// 使用 const 关键字定义常量(在类外部或类内部均可)
const PI = 3.14159;

echo SITE_NAME; // 输出 "我的网站"
?>

2. 预定义常量

PHP 内置了大量有用的预定义常量:

1
2
3
4
5
6
7
8
<?php
echo PHP_VERSION; // 当前 PHP 版本号
echo PHP_OS; // 操作系统名称
echo PHP_EOL; // 当前系统的换行符
echo __LINE__; // 当前代码所在的行号
echo __FILE__; // 当前文件的完整路径
echo __DIR__; // 当前文件所在目录
?>

五、输出语句

PHP 提供了多种向浏览器输出内容的方式。

方式 说明
echo 输出一个或多个字符串,最常用
print 输出一个字符串,有返回值
print_r() 以人类可读的方式输出变量信息,适合调试数组
var_dump() 输出变量的完整信息和类型,是调试最强工具

六、运算符

1. 算术运算符

运算符 名称 示例
+ 加法 $a + $b
- 减法 $a - $b
* 乘法 $a * $b
/ 除法 $a / $b
% 取模(余数) $a % $b
** 幂运算(PHP 5.6+) $a ** $b

2. 赋值运算符

运算符 等价于
= 赋值
+= $a = $a + $b
-= $a = $a - $b
*= $a = $a * $b
/= $a = $a / $b
.= $a = $a . $b(字符串连接)

3. 比较运算符

运算符 名称 说明
== 等于 值相等返回 true
=== 全等 值和类型都相等返回 true
!=<> 不等于 值不相等返回 true
!== 不全等 值或类型不相等返回 true
> 大于 -
< 小于 -
>= 大于等于 -
<= 小于等于 -
<=> 太空船运算符 比较两个值,返回 -1、0 或 1(PHP 7+)
1
2
3
4
5
<?php
var_dump(5 == "5"); // bool(true),值相等
var_dump(5 === "5"); // bool(false),类型不同
var_dump(5 <=> 3); // int(1),因为 5 > 3
?>

4. 逻辑运算符

运算符 名称
and&& 逻辑与
or|| 逻辑或
xor 逻辑异或
! 逻辑非

5. 字符串运算符

1
2
3
4
5
6
<?php
$firstName = "张";
$lastName = "三";
$fullName = $firstName . $lastName; // 使用 `.` 连接字符串
echo $fullName; // 输出 "张三"
?>

6. 错误控制运算符

@ 符号可以抑制表达式产生的错误信息:

1
2
3
4
5
6
<?php
$file = @fopen('不存在的文件.txt', 'r');
if (!$file) {
echo "文件打开失败";
}
?>

7. 执行运算符

反引号 ` 可以执行 shell 命令并捕获输出:

1
2
3
4
<?php
$output = `ls -la`;
echo $output;
?>

七、控制结构

控制结构用于控制程序的执行流程。

1. 条件语句:if...else

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$score = 85;

if ($score >= 90) {
echo "优秀";
} elseif ($score >= 80) {
echo "良好";
} elseif ($score >= 60) {
echo "及格";
} else {
echo "不及格";
}
?>

2. 条件语句:switch

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$day = 3;

switch ($day) {
case 1:
echo "星期一";
break;
case 2:
echo "星期二";
break;
case 3:
echo "星期三";
break;
default:
echo "未知";
}
?>

3. 循环语句:for

1
2
3
4
5
<?php
for ($i = 0; $i < 5; $i++) {
echo "当前值:$i <br>";
}
?>

4. 循环语句:while

1
2
3
4
5
6
7
<?php
$count = 0;
while ($count < 5) {
echo "计数:$count <br>";
$count++;
}
?>

5. 循环语句:foreach(专门遍历数组)

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$colors = ["红色", "绿色", "蓝色"];

foreach ($colors as $color) {
echo "$color <br>";
}

// 获取键和值
$user = ["name" => "张三", "age" => 25];
foreach ($user as $key => $value) {
echo "$key: $value <br>";
}
?>

八、超级全局变量

PHP 提供了多个预定义的超级全局变量,它们在所有作用域中都可以使用。

超级全局变量 说明
$_GET 收集 URL 参数(查询字符串)
$_POST 收集表单提交(method="post")的数据
$_REQUEST 包含 $_GET$_POST$_COOKIE 的内容
$_SESSION 会话变量,用于存储用户会话信息
$_COOKIE 浏览器 Cookie 数据
$_FILES 上传文件的信息
$_SERVER 服务器和执行环境信息
$_ENV 环境变量

九、函数

1. 自定义函数

使用 function 关键字定义函数,return 语句可以返回一个值。

1
2
3
4
5
6
7
<?php
function greet($name) {
return "你好,$name!";
}

echo greet("张三"); // 输出 "你好,张三!"
?>

2. 参数默认值

可以为参数设置默认值。

1
2
3
4
5
6
7
8
<?php
function greet($name = "访客") {
return "你好,$name!";
}

echo greet(); // 输出 "你好,访客!"
echo greet("李四"); // 输出 "你好,李四!"
?>

3. 可变数量的参数

使用 ... 运算符可以接收任意数量的参数(PHP 5.6+)。

1
2
3
4
5
6
7
<?php
function sum(...$numbers) {
return array_sum($numbers);
}

echo sum(1, 2, 3, 4); // 输出 10
?>

4. 类型声明(PHP 7+)

PHP 7+ 支持为参数和返回值声明类型。

1
2
3
4
5
6
7
8
<?php
function add(int $a, int $b): int {
return $a + $b;
}

echo add(5, 3); // 输出 8
// echo add(5, "3"); // 在严格模式下会报错
?>

5. 严格模式

在文件开头声明 declare(strict_types=1); 可以启用严格类型检查,确保参数类型严格匹配。

十、包含文件

PHP 可以包含其他 PHP 文件,实现代码复用。

方式 说明
include 包含文件,如果文件不存在会产生警告,脚本继续执行
include_once 只包含一次,防止重复包含
require 包含文件,如果文件不存在会产生致命错误,脚本停止执行
require_once 只包含一次,防止重复包含

十一、错误处理与调试

1. 错误报告级别

在开发过程中,建议开启所有错误报告:

1
2
3
4
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>

2. 输出调试信息

使用 var_dump()print_r() 等函数输出变量信息,帮助调试。

3. 异常处理

PHP 支持使用 try...catch 来捕获和处理异常。

1
2
3
4
5
6
7
8
9
10
<?php
try {
// 可能产生异常的代码
$result = 10 / 0;
} catch (DivisionByZeroError $e) {
echo "错误:" . $e->getMessage();
} finally {
echo "无论是否发生异常,都会执行";
}
?>

总结

PHP 的语法从基础的标签开始,涵盖了变量、常量、数据类型、控制结构、函数和超级全局变量等核心知识点。本章详细讲解了这些基础内容,掌握它们是编写高效、健壮的 PHP 代码的基石。接下来,可以进一步学习 PHP 的数组操作、表单处理、数据库交互等高级话题。