PHP: 基本语法
PHP 的语法借鉴了 C、Java 和 Perl,如果你学过任何一门编程语言,你会觉得 PHP 很眼熟。如果你没学过——没关系,这节课就是你的起点。
1. PHP 标签
PHP 代码必须写在 PHP 标签里面,服务器才能识别和执行它。
(1) 标准写法(推荐)
PHP
<?php
// 这里是 PHP 代码
echo "Hello World";
?>
(2) 短标签(echo 专用)
PHP
<?= "Hello World" ?> <!-- 等价于 <?php echo "Hello World"; ?> -->
<?= ?> 是 <?php echo ... ?> 的简写,在 PHP 5.4 之后总是可用。在 HTML 中嵌入变量时特别方便:
PHP
<h1>欢迎,<?= $username ?></h1>
⚠️ 注意: 历史上还有
<? ?> 短标签(不带 php),但这个写法依赖 php.ini 中 short_open_tag 配置,在不同服务器上可能失效。永远用 <?php 标准标签。
(3) 文件末尾的 ?> 可以省略
如果文件是纯 PHP 代码(不含 HTML),推荐不写结尾的 ?>:
PHP
<?php
// 纯 PHP 文件,不写 ?>
echo "Done";
// 文件结束,没有 ?>
为什么?避免 ?> 后面的意外空白输出干扰 HTTP 头。
2. PHP 与 HTML 混写
PHP 最独特的地方:可以在同一个文件里自由混合 HTML 和 PHP:
▶ 示例:PHP 嵌入 HTML
PHP
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>我的网站</title>
</head>
<body>
<h1><?= "欢迎来访" ?></h1>
<p>现在时间是:<?= date("H:i:s") ?></p>
<?php
$isLogin = true;
if ($isLogin):
?>
<p>✅ 您已登录</p>
<?php else: ?>
<p>❌ 请先登录</p>
<?php endif; ?>
</body>
</html>
💡 提示: PHP 有两种混写 HTML 的风格。简洁输出用
<?= ?>;大段逻辑用 <?php ... ?> 包起来。控制结构的替代语法(if (): ... endif;)比用 {} 更好读。
3. 语句与分号
PHP 中每条语句必须以分号 ; 结尾:
PHP
<?php
echo "第一行";
echo "第二行";
$name = "PHP";
?>
规则:
- 每条执行语句后用
; - PHP 代码块的最后一条语句可以省略分号(但不推荐,影响一致性)
?>本身就隐含了一个分号,所以echo "Hi" ?>也合法(但仍推荐加;)
🔥 易错: 忘记写分号是最常见的 PHP 初学错误。报错信息通常是
Parse error: syntax error, unexpected ... ,看到它先检查分号。
4. 大小写敏感规则
PHP 中不同东西的大小写规则不同,这一点容易混淆:
| 类型 | 大小写敏感? | 示例 |
|---|---|---|
| 变量名 | ✅ 敏感 | $name ≠ $Name ≠ $NAME |
| 常量名 | ✅ 敏感 | MY_CONST ≠ my_const |
| 函数名 | ❌ 不敏感 | echo() = ECHO() = Echo() |
| 类名/方法名 | ❌ 不敏感 | MyClass = myclass |
| 关键字 | ❌ 不敏感 | if = IF = If |
▶ 示例:变量区分大小写
PHP
<?php
$color = "红色";
$Color = "蓝色";
$COLOR = "绿色";
echo $color; // 输出:红色
echo $Color; // 输出:蓝色
echo $COLOR; // 输出:绿色
?>
💡 提示: 虽然函数名和关键字不区分大小写,但坚持用小写是最佳实践。代码一致性比灵活性重要。
5. 注释
PHP 支持三种注释风格:
PHP
<?php
// 这是单行注释(C++ 风格)
# 这也是单行注释(Shell 风格)
/*
* 这是多行注释
* 可以跨越多行
* 和 C 语言一样
*/
/**
* 这是文档注释
* 用来给函数、类写说明
* @param string $name 用户名
* @return string 问候语
*/
function greet($name) {
return "你好," . $name;
}
?>
| 风格 | 写法 | 说明 |
|---|---|---|
| 双斜线 | // 注释 |
最常用,推荐 |
| 井号 | # 注释 |
Shell 风格,少用 |
| 斜线星号 | /* */ |
多行注释 |
| 文档注释 | /** */ |
写函数/类的 API 文档 |
💡 提示: 注释不要写废话。
// 给 $a 赋值 1 这种一看就懂的代码不需要注释。注释应该解释"为什么这样做",而不是"做了什么事"。
6. echo 与 print
echo 和 print 都是 PHP 的输出语句,它们很相似但有细微区别:
| echo | ||
|---|---|---|
| 能输出多个 | ✅ echo "a","b","c"; |
❌ 只能一个 |
| 返回值 | ❌ 无返回值 | ✅ 总返回 1 |
| 速度 | 快一点点 | 慢一点点 |
| 使用比例 | 95% 用 echo | 极少使用 |
▶ 示例:echo 输出
PHP
<?php
// 输出字符串
echo "Hello World";
// 输出多个(逗号分隔)
echo "我", "叫", "小明"; // 输出:我叫小明
// 输出 HTML 标签
echo "<h2>这是一级标题</h2>";
// 输出变量
$name = "Alice";
echo "Hello, " . $name; // Hello, Alice
// 双引号内直接解析变量
echo "Hello, $name"; // Hello, Alice
?>
💡 提示: 永远用
echo。除非你在一个必须接收返回值的上下文中(极其罕见),否则不需要 print。
7. 转义字符
在字符串中使用反斜线 \ 来表示特殊字符:
| 转义序列 | 含义 |
|---|---|
\n |
换行符 |
\r |
回车符 |
\t |
制表符(Tab) |
\\ |
反斜线本身 |
\$ |
美元符号(避免被当作变量) |
\" |
双引号 |
▶ 示例:转义字符
PHP
<?php
echo "第一行\n第二行\n第三行";
// 浏览器中换行要用 <br>
echo "第一行<br>第二行<br>第三行";
echo "他说:\"PHP 很简单!\"";
echo "路径是 C:\\xampp\\htdocs";
echo "价格是 \$100";
?>
⚠️ 注意:
\n 在 HTML 中不会产生可见换行(浏览器忽略纯文本换行)。要在网页中换行,用 <br> 标签加上 CSS 样式。\n 在查看 HTML 源代码时才有换行效果。
❓ 常见问题
Q 为什么我的 .php 文件在浏览器中直接显示了源代码,而不是执行结果?
A 你可能是双击打开了 .php 文件(用
file:/// 协议),或者服务器没有安装/启用 PHP。必须通过 http://localhost/ 访问 PHP 文件。Q
<?php 和 <?= 有什么区别?A
<?php 是完整的 PHP 标签,里面写任何 PHP 代码。<?= ?> 是 <?php echo ... ?> 的简写,只能用来输出一个表达式。Q echo 后面可以同时输出数字和字符串吗?
A 可以。PHP 会自动类型转换。
echo 42 . " is the answer"; 输出 "42 is the answer",数字 42 被自动转为字符串。📖 小节
- PHP 代码写在
<?php ?>标签中,<?= ?>是 echo 的简写 - 纯 PHP 文件建议省略结尾的
?> - PHP 和 HTML 可以自由混写在同一文件里
- 每条语句以分号
;结尾 - 变量名区分大小写,函数名和关键字不区分(但坚持用小写)
- 三种注释:
//#/* */,推荐// echo是最常用的输出语句,print几乎不用- 转义字符用反斜线
\,HTML 换行用<br>
📝 作业
- 创建一个 PHP 页面,包含你的名字(用变量)、当前日期(用 date 函数)、以及一段 HTML 表格,全部用
echo输出。 - 在同一个文件里试试
//、#、/* */三种注释,确认它们都能正常工作。 - 写一个包含
\n和<br>的对比示例,理解它们在浏览器中的区别。