引言:
PHP 基础语法是编写 PHP 代码的核心规则,涵盖变量、常量、数据类型、运算符、控制结构、函数与超级全局变量等关键内容。本文系统讲解 PHP 的基本语法结构与用法。
PHP 基础语法详解
PHP 的基础语法简单直观,结合了 C、Java 和 Perl 等多种语言的优点,易于理解与上手。掌握这些基础规则,是编写 PHP 代码的第一步。
一、PHP 代码的基本结构
1. PHP 标签:进入“PHP 模式”
PHP 代码必须被特定的起始和结束标签包裹,这样服务器才能识别出需要执行的部分。
1 2 3 4
| <?php
echo "Hello, World!"; ?>
|
这是一个标准的 PHP 代码块。标签之外的内容会被当作纯 HTML 输出。
2. 一条简单的指令:语句与分号
在 PHP 中,每条指令(语句)都需要以分号 ; 结尾,用以结束当前指令。
1 2 3 4
| <?php echo "第一行输出"; echo "第二行输出"; ?>
|
3. 注释:给代码写“说明书”
注释是代码中不会被执行的文本,用于为代码添加解释或说明。
PHP 支持三种风格的注释:
二、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"; echo $username; ?>
|
4. 变量与引用赋值
除了普通的赋值,PHP 还支持引用赋值,使用 & 符号让两个变量指向同一个值。修改其中一个会同步影响另一个。
1 2 3 4 5 6
| <?php $a = 5; $b = &$a; $b = 10; echo $a; ?>
|
三、数据类型
PHP 的数据类型分为三大类:标量类型、复合类型和特殊类型。
1. 标量类型
| 类型 |
说明 |
示例 |
bool |
布尔值,只有 true 和 false |
$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); ?>
|
四、常量
常量是程序中固定不变的值,一旦定义就不能被修改。
1. 定义与使用
使用 define() 函数或 const 关键字可以定义一个常量。
1 2 3 4 5 6 7 8 9 10
| <?php
define("SITE_NAME", "我的网站"); define("MAX_USERS", 1000);
const PI = 3.14159;
echo SITE_NAME; ?>
|
2. 预定义常量
PHP 内置了大量有用的预定义常量:
1 2 3 4 5 6 7 8
| <?php echo PHP_VERSION; 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"); var_dump(5 === "5"); var_dump(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); ?>
|
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);
?>
|
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 的数组操作、表单处理、数据库交互等高级话题。