PHP 教程:新手入门介绍
欢迎来到 PHP 的世界!如果你对构建动态网站充满好奇,或者想要学习一门强大且广泛应用的服务器端脚本语言,那么 PHP 是一个绝佳的选择。本篇文章将带你从零开始,逐步了解 PHP 是什么,如何开始编写你的第一个 PHP 程序,以及掌握一些核心的基础知识。无论你是否有编程经验,本教程都将以清晰、易懂的方式引导你入门。
1. 什么是 PHP?
PHP 的全称是 “PHP: Hypertext Preprocessor”,它是一种开源的服务器端脚本语言。简单来说,PHP 代码在服务器上执行,生成 HTML 或其他类型的输出,然后发送到用户的浏览器。这与客户端脚本语言(如 JavaScript)不同,JavaScript 通常在用户的浏览器中执行。
PHP 最初由 Rasmus Lerdorf 在 1994 年创建,用于构建个人主页。随着时间的推移,它不断发展,功能越来越强大,并成为了构建动态网站和 Web 应用的主流语言之一。今天,全球有大量网站(包括许多知名平台如 WordPress、Facebook、维基百科等)使用 PHP 作为其核心技术。
PHP 的主要特点:
- 易于学习: 语法结构清晰,类似于 C、Java 和 Perl,对于初学者来说比较友好。
- 开源免费: 可以免费获取和使用,拥有庞大的社区支持。
- 跨平台: 可以在各种操作系统(Windows、Linux、macOS 等)和 Web 服务器(Apache、Nginx 等)上运行。
- 高效稳定: 经过多年的发展和优化,性能良好且稳定。
- 强大的功能: 特别适合 Web 开发,提供了丰富的数据库支持、文件处理、会话管理、网络通信等功能。
- 与 HTML 紧密集成: 可以方便地将 PHP 代码嵌入到 HTML 代码中。
2. 为什么选择学习 PHP?
- 广泛应用: 大量现有网站和应用使用 PHP,市场对 PHP 开发者的需求依然很大。
- 上手快速: 相对于一些其他语言,PHP 的入门门槛较低,可以快速搭建起一个动态网站。
- 丰富的框架和工具: PHP 拥有成熟的框架(如 Laravel, Symfony, CodeIgniter)和大量的库,可以加速开发过程。
- 强大的社区支持: 遇到问题时,可以很容易地在网上找到解决方案、教程和社区帮助。
- 与数据库协同能力强: 对各种数据库(尤其是 MySQL)的支持非常好,这是动态网站的核心需求。
3. 开始前的准备:搭建 PHP 开发环境
要运行 PHP 代码,你需要一个 Web 服务器、PHP 解释器和一个可选的数据库服务器。对于新手来说,最简单的方式是安装一个集成的开发环境软件包,这些软件包通常包含了你需要的一切:
- Apache (或 Nginx): Web 服务器软件,负责接收浏览器请求并将结果发送回浏览器。
- PHP: PHP 解释器,负责执行你的 PHP 代码。
- MySQL (或 MariaDB): 数据库服务器,用于存储和管理数据(虽然不是运行 所有 PHP 代码的必需品,但对于动态网站来说几乎是必不可少的)。
常见的集成环境软件包:
- XAMPP: 支持 Windows, macOS, Linux。包含了 Apache, MySQL, PHP, Perl。
- WampServer: 主要用于 Windows。包含了 Apache, MySQL, PHP。
- MAMP: 主要用于 macOS。包含了 Apache, MySQL, PHP。
安装步骤(以 XAMPP 为例,其他类似):
- 访问 XAMPP 官网 (apachefriends.org) 下载对应你操作系统的版本。
- 运行安装程序,按照提示进行安装。选择你需要的组件(至少需要 Apache 和 PHP)。
- 安装完成后,打开 XAMPP 控制面板。
- 启动 Apache 和 MySQL 服务。如果服务成功启动,对应的模块名称背景会变成绿色。
- 打开你的浏览器,访问
http://localhost
或http://127.0.0.1
。如果看到 XAMPP 的欢迎页面,说明 Web 服务器已经正常工作。
放置你的 PHP 文件:
安装集成环境后,会有一个特定的文件夹作为 Web 服务器的根目录,通常命名为 htdocs
(XAMPP) 或 www
(WampServer)。你需要将你的 PHP 文件存放在这个文件夹或其子文件夹中。例如,如果你在 htdocs
文件夹下创建一个名为 my_project
的子文件夹,并将一个 PHP 文件 index.php
放在里面,那么你可以在浏览器中通过 http://localhost/my_project/index.php
来访问它。
4. 你的第一个 PHP 程序:”Hello, World!”
好了,环境搭建完毕,让我们来写第一个 PHP 程序。这个程序非常简单,只是在浏览器中显示 “Hello, World!”。
- 打开一个纯文本编辑器(如 VS Code, Sublime Text, Notepad++)。
- 创建一个新文件。
-
输入以下代码:
“`php
<!DOCTYPE html>
我的第一个 PHP 页面
<?php
echo “Hello, World!”;
?>
“` -
将文件保存为
hello.php
(确保扩展名是.php
)到你的 Web 服务器根目录(htdocs
或www
)下。 - 打开你的 Web 浏览器,访问
http://localhost/hello.php
。
你应该能在浏览器中看到 “Hello, World!” 字样。
代码解析:
<!DOCTYPE html>
,<html>
,<head>
,<body>
等是标准的 HTML 标签,因为 PHP 通常用于生成 HTML。<?php ... ?>
是 PHP 代码的起始和结束标记。所有位于这两个标记之间的代码都会被服务器上的 PHP 解释器执行。echo
是 PHP 的一个语言结构(或称指令),用于输出字符串或其他内容。在这里,它输出了字符串 “Hello, World!”。"Hello, World!"
是一个字符串字面量,用双引号括起来。;
分号用于结束一个 PHP 语句。在 PHP 中,大多数语句都需要以分号结束。
你可以将 PHP 代码块放在 HTML 页面的任何位置,PHP 解释器只会处理 <?php ... ?>
内部的代码,其他部分则作为普通的 HTML 发送给浏览器。
5. PHP 基础语法
理解 PHP 的基本语法是编写代码的基础。
5.1. PHP 标记
PHP 代码必须放在 PHP 标记之间。最常用的标记是:
<?php ... ?>
:推荐使用的标准标记。<?= ... ?>
:这是一个快捷输出标记,等同于<?php echo ... ?>
,常用于在 HTML 中快速输出变量或表达式的值。
其他旧版本的标记(如 <? ... ?>
和 <% ... %>
)不推荐使用,因为它们可能需要在服务器配置中启用,且与 XML 标记 <xml>
冲突。始终使用 <?php ... ?>
是最好的习惯。
5.2. 语句结束符
PHP 中的每个语句通常以分号 (;
) 结束。这是告诉解释器一个语句在哪里结束。
“`php
“`
5.3. 注释
注释用于解释代码,它们会被 PHP 解释器忽略。在编写复杂代码时,添加注释是一个非常好的习惯。PHP 支持以下几种注释方式:
- 单行注释: 使用
//
或#
php
<?php
// 这是一个单行注释
echo "Hello"; # 这也是一个单行注释
?> - 多行注释: 使用
/* ... */
php
<?php
/*
这是一个多行注释
可以跨越多行来解释代码块
*/
echo "World!";
?>
5.4. 大小写敏感性
- 变量名 对大小写敏感。
$myVariable
和$myvariable
是两个不同的变量。 - 函数名、类名、关键字(如
if
,else
,while
,echo
,function
等)对大小写不敏感。echo
和ECHO
或Echo
是等效的,但为了代码的可读性,建议始终使用小写。
“`php
“`
6. 变量
变量是用于存储信息的容器。在 PHP 中,变量以美元符号 ($
) 开头,后面跟着变量名。
6.1. 声明和赋值
在 PHP 中,你不需要提前声明变量的类型。当你第一次给变量赋值时,它就被创建了。
“`php
“`
6.2. 变量命名规则
- 变量名必须以
$
符号开始。 - 变量名不能以数字开头。
- 变量名只能包含字母、数字和下划线 (
_
)。 - 变量名不能包含空格。
- 变量名是大小写敏感的(如前所述)。
合法的变量名示例:$name
, $my_variable
, $age
, $car99
非法的变量名示例:$99cars
, $my-variable
, $my variable
6.3. 数据类型
PHP 支持多种数据类型:
-
String (字符串): 一串字符,可以用单引号 (
'
) 或双引号 ("
) 括起来。- 单引号字符串:不会解析变量或转义序列(除了
\'
和\\
)。 - 双引号字符串:会解析变量(变量替换)和更多的转义序列(如
\n
换行)。
php
<?php
$name = "小明";
echo '你好,$name'; // 输出:你好,$name (变量没有被解析)
echo "你好,$name"; // 输出:你好,小明 (变量被解析)
?> - 单引号字符串:不会解析变量或转义序列(除了
-
Integer (整数): 没有小数部分的数字。
php
<?php
$age = 30;
$count = -5;
?> -
Float (浮点数): 带小数部分的数字,或指数形式表示的数字。
php
<?php
$price = 19.99;
$pi = 3.14159;
?> -
Boolean (布尔值): 只有两个可能的值:
true
或false
(不区分大小写)。通常用于条件判断。
php
<?php
$is_logged_in = true;
$has_items = false;
?> -
Array (数组): 存储多个值在一个变量中。后面会详细介绍。
php
<?php
$colors = array("红", "绿", "蓝");
?> -
Object (对象): 类的实例。面向对象编程的范畴,入门阶段可以先了解其概念。
-
NULL: 表示变量没有值。
php
<?php
$car = "Volvo";
$car = null; // 现在 $car 没有值
?> -
Resource (资源): 特殊变量,持有外部资源的引用,如数据库连接、文件句柄等。
你可以使用 var_dump()
函数来查看变量的值和数据类型,这对于调试非常有用。
“`php
输出可能类似于:
string(5) “Hello”
int(123)
float(3.14)
bool(true)
“`
7. 运算符
运算符用于对变量和值执行操作。PHP 支持多种运算符。
7.1. 算术运算符
用于执行常见的算术操作。
* +
加法
* -
减法
* *
乘法
* /
除法
* %
取模(余数)
* **
幂(PHP 5.6+)
“`php
“`
7.2. 赋值运算符
用于给变量赋值。最基本的是 =
。
* =
赋值
* +=
, -=
, *=
, /=
, %=
, **=
复合赋值(例如 $x += $y
等同于 $x = $x + $y
)
* .=
字符串连接赋值($string .= "world"
等同于 $string = $string . "world"
)
“`php
“`
7.3. 比较运算符
用于比较两个值,并返回布尔值 (true
或 false
)。
* ==
相等(只比较值,不比较类型)
* ===
全等(比较值和类型)
* !=
或 <>
不相等(只比较值)
* !==
不全等(比较值和类型)
* >
大于
* <
小于
* >=
大于等于
* <=
小于等于
* <=>
太空船运算符(PHP 7+,用于三方比较,返回 -1, 0, 1)
重要: 理解 ==
和 ===
的区别非常重要。
“`php
“`
7.4. 逻辑运算符
用于组合条件语句。
* &&
或 and
逻辑与 (两个条件都为 true 时结果为 true)
* ||
或 or
逻辑或 (任一条件为 true 时结果为 true)
* !
逻辑非 (取反,true 变 false,false 变 true)
* xor
逻辑异或 (两个条件不同时结果为 true)
“`php
= 18 && $is_student) {
echo “符合条件”;
}
if ($age < 18 || !$is_student) { echo "不符合条件的一种情况"; } ?>
“`
7.5. 字符串运算符
.
连接两个字符串.=
连接并赋值
“`php
“`
7.6. 自增/自减运算符
用于递增或递减变量的值。
* ++$x
前置递增 (先递增,后返回值)
* $x++
后置递增 (先返回值,后递增)
* --$x
前置递减 (先递减,后返回值)
* $x--
后置递减 (先返回值,后递减)
“`php
“`
8. 控制结构
控制结构用于控制代码的执行流程,是编写逻辑的关键。
8.1. 条件语句
根据条件是否为 true 来执行不同的代码块。
-
if
语句:如果条件为 true,则执行代码块。
“`php
<?php
$t = date(“H”); // 获取当前小时数if ($t < "20") { echo "祝你今天愉快!"; }
?>
“` -
if...else
语句:如果条件为 true 执行一个代码块,否则执行另一个代码块。
“`php
<?php
$t = date(“H”);if ($t < "20") { echo "祝你今天愉快!"; } else { echo "祝你晚安!"; }
?>
“` -
if...elseif...else
语句:根据多个条件执行不同的代码块。
“`php
<?php
$t = date(“H”);if ($t < "10") { echo "早上好!"; } elseif ($t < "20") { echo "下午好!"; } else { echo "晚上好!"; }
?>
“` -
switch
语句:用于基于不同的条件执行不同的动作,常用于处理固定的可能值。
“`php
<?php
$favcolor = “red”;switch ($favcolor) { case "red": echo "你喜欢的颜色是红色!"; break; // 必须使用 break 来阻止代码继续执行下一个 case case "blue": echo "你喜欢的颜色是蓝色!"; break; case "green": echo "你喜欢的颜色是绿色!"; break; default: // 如果没有任何 case 匹配 echo "你喜欢的颜色不是红、蓝、绿!"; }
?>
“`
8.2. 循环语句
重复执行一个代码块。
-
while
循环:只要条件为 true 就一直执行代码块。
php
<?php
$i = 1;
while ($i <= 5) {
echo "数字是: " . $i . "<br>"; // 使用 . 连接字符串和变量
$i++; // 不要忘记更新条件相关的变量,否则可能导致无限循环
}
?> -
do...while
循环:先执行一次代码块,然后只要条件为 true 就继续执行。这保证代码块至少执行一次。
php
<?php
$i = 1;
do {
echo "数字是: " . $i . "<br>";
$i++;
} while ($i <= 5);
?> -
for
循环:当你知道需要循环多少次时使用。
php
<?php
for ($i = 0; $i < 10; $i++) {
echo "这是第 " . ($i + 1) . " 次循环。<br>";
}
?>
for
循环有三个部分:- 初始化计数器 (
$i = 0;
) - 设置循环条件 (
$i < 10;
) - 递增/递减计数器 (
$i++;
)
- 初始化计数器 (
-
foreach
循环:专门用于遍历数组。后面会在数组章节详细介绍。
9. 函数
函数是一段可以重复使用的代码块。使用函数可以提高代码的组织性、可读性和可维护性。
9.1. 内置函数
PHP 提供了数千个内置函数来完成各种任务,例如字符串处理 (strlen()
, str_replace()
)、数学计算 (rand()
, max()
)、日期和时间 (date()
, time()
)、文件操作等等。
“`php
“`
查询 PHP 官方文档是了解和使用内置函数的最佳方式。
9.2. 用户自定义函数
你可以创建自己的函数来封装特定功能。
“`php
“; // 换行
// 定义一个带参数的函数
function greet($name) {
echo “你好,” . $name . “!”;
}
// 调用带参数的函数
greet(“张三”); // 输出:你好,张三!
echo “
“;
// 定义一个带返回值和参数的函数
function sum($num1, $num2) {
$result = $num1 + $num2;
return $result; // 使用 return 返回值
}
// 调用带返回值的函数,并将结果存储在变量中
$total = sum(10, 20);
echo “总和是: ” . $total; // 输出:总和是: 30
?>
“`
函数定义规则:
- 函数名必须以字母或下划线开头。
- 函数名不能以数字开头。
- 函数名只能包含字母、数字和下划线 (
_
)。 - 函数名不区分大小写(但建议遵循一致的命名风格)。
10. 数组
数组是一种特殊类型的变量,它可以存储多个值在一个变量中。
10.1. Indexed Arrays (索引数组)
使用数字作为键(key),默认从 0 开始。
“`php
“; // 预格式化输出,方便查看数组结构 print_r($cars); echo “
“;
/* 输出:
Array
(
[0] => Volvo
[1] => BMW
[2] => Ford
[3] => Audi
)
*/
?>
“`
10.2. Associative Arrays (关联数组)
使用具名的键(字符串)来访问元素,而不是数字索引。
“`php
“35”, “Ben”=>”37”, “Joe”=>”43”);
// 或使用简写语法 (PHP 5.4+)
$person = [
“name” => “张三”,
“age” => 25,
“city” => “北京”
];
// 访问数组元素 (使用键)
echo “Peter 的年龄是 ” . $age[‘Peter’] . “.
“; // 输出: Peter 的年龄是 35.
echo $person[‘name’]; // 输出: 张三
// 修改数组元素
$person[‘age’] = 26;
// 添加新元素
$person[‘job’] = “工程师”;
// 查看整个数组
echo “
"; print_r($person); echo "
“;
/* 输出:
Array
(
[name] => 张三
[age] => 26
[city] => 北京
[job] => 工程师
)
*/
?>
“`
10.3. 遍历数组 (foreach
循环)
foreach
循环是遍历数组的最简单方法。
-
只获取值:
php
<?php
$colors = ["红", "绿", "蓝"];
foreach ($colors as $value) {
echo $value . "<br>";
}
?> -
同时获取键和值:
php
<?php
$age = ["Peter"=>"35", "Ben"=>"37", "Joe"=>"43"];
foreach ($age as $key => $value) {
echo "键=" . $key . ", 值=" . $value . "<br>";
}
?>
11. PHP 与 Web 表单交互
PHP 最常见的用途之一是处理 HTML 表单提交的数据。当用户在一个 HTML 表单中输入数据并提交时,这些数据会被发送到服务器,然后 PHP 脚本可以访问和处理这些数据。
11.1. HTML 表单 (<form>
)
一个简单的 HTML 表单:
“`html
“`
action="welcome.php"
:指定表单数据提交到哪个 PHP 文件进行处理。method="post"
:指定提交方法。常用方法有 GET 和 POST。- GET: 数据会附加到 URL 的末尾,以问号 (
?
) 分隔。不适合敏感信息或大量数据。 - POST: 数据在 HTTP 请求体中发送,不会显示在 URL 中。适合敏感信息和大量数据。
- GET: 数据会附加到 URL 的末尾,以问号 (
11.2. 获取表单数据:$_GET
和 $_POST
PHP 提供了两个超全局数组来获取表单数据:
$_GET
: 一个关联数组,包含所有通过 GET 方法提交的数据。数组的键是表单输入元素的name
属性值。$_POST
: 一个关联数组,包含所有通过 POST 方法提交的数据。数组的键是表单输入元素的name
属性值。
示例:创建 welcome.php
文件来处理上面的表单数据。
“`php
“;
echo “你的邮箱是: ” . $email;
} else {
// 如果不是通过 POST 提交,可以给出提示或重定向
echo “请通过表单提交数据。”;
}
?>
“`
重要提示: 直接使用 $_GET
或 $_POST
中的数据是非常不安全的!在将用户输入的数据用于数据库查询、显示在页面上或进行其他处理之前,必须对其进行验证和净化(例如,使用 htmlspecialchars()
防止跨站脚本攻击 XSS,使用预处理语句防止 SQL 注入)。这是 Web 安全的关键部分,但超出了本入门教程的范围。在实际开发中,务必深入学习安全相关的知识。
12. 与数据库交互(简介)
构建动态网站常常需要存储和检索数据,这就需要数据库。PHP 与多种数据库兼容,其中最流行的是 MySQL。
与数据库交互的基本步骤:
- 连接数据库: 使用 PHP 函数建立与数据库服务器的连接(需要数据库地址、用户名、密码、数据库名)。
- 执行 SQL 查询: 向数据库发送 SQL 语句(如 SELECT, INSERT, UPDATE, DELETE)。
- 处理查询结果: 对数据库返回的数据进行处理(例如,将查询结果显示在网页上)。
- 关闭数据库连接: 在脚本执行完毕后关闭连接,释放资源。
PHP 提供了多种扩展来连接数据库,常用的有:
- MySQLi (MySQL Improved): 专门用于 MySQL 数据库,支持面向对象和过程式两种风格。
- PDO (PHP Data Objects): 提供了一个数据访问抽象层,可以通过同一套函数连接多种数据库(如 MySQL, PostgreSQL, SQLite 等)。推荐使用 PDO,因为它更灵活且支持参数化查询(有助于防止 SQL 注入)。
由于数据库操作本身就是一个很大的话题,包含 SQL 语言的学习,在这里我们只展示一个使用 MySQLi 连接数据库的简单示例(不包含具体查询):
“`php
connect_error) {
die(“数据库连接失败: ” . $conn->connect_error);
}
echo “数据库连接成功”;
// … 在这里执行 SQL 查询 …
// 关闭连接
$conn->close();
?>
``
your_username
**请注意:** 上面的示例仅为连接演示,,
your_password,
your_database` 需要替换为你实际的数据库信息。在实际应用中,连接信息通常存储在配置文件中。
深入学习数据库操作,包括 SQL 语言、如何执行查询、如何处理结果集、如何进行数据插入、更新、删除以及更重要的——如何安全地进行数据库操作(如使用预处理语句 PDO::prepare),是构建强大 Web 应用的下一步。
13. 下一步学习什么?
恭喜你!你已经掌握了 PHP 的基本语法和核心概念。这只是 PHP 世界的冰山一角,但为你 आगे (áijìn – forward/next) 的学习打下了坚实的基础。接下来,你可以继续深入学习:
- 更高级的 PHP 特性: 面向对象编程 (OOP)、命名空间、Composer (PHP 依赖管理工具)。
- 会话管理 (Sessions) 和 Cookie: 如何在不同页面之间维护用户状态(例如,登录状态)。
- 文件操作: 如何读取、写入和处理服务器上的文件。
- 错误处理和调试: 当代码出错时如何找出问题并解决。
- PHP 安全性: 学习如何防止常见的 Web 攻击(如 XSS, CSRF, SQL 注入)。
- 更深入的数据库操作: 学习更复杂的 SQL 查询和数据库设计。
- PHP 框架: 学习使用 Laravel, Symfony, CodeIgniter 等流行的框架,它们提供了构建 Web 应用所需的结构和工具,可以大大提高开发效率和代码质量。
- 版本控制: 学习使用 Git 来管理你的代码。
14. 资源推荐
- PHP 官方文档 (php.net): 最权威、最全面的 PHP 参考资料。虽然对于完全的初学者可能有些难懂,但当你需要查找特定函数或特性时,它是最好的去处。
- W3Schools (w3schools.com): 提供大量简单易懂的 Web 技术教程,包括 PHP。非常适合入门。
- 菜鸟教程 (runoob.com): 提供中文版的各种编程教程,包括 PHP。
- 在线编程社区和论坛: Stack Overflow (英文), segmentfault (中文), CSDN 等,遇到问题时可以在这些社区寻求帮助。
- 在线练习平台: 一些网站提供在线 PHP 编程练习,可以帮助你巩固知识。
15. 总结
本文带你了解了 PHP 的基础知识,包括:
- 什么是 PHP 以及它的用途。
- 如何搭建 PHP 开发环境。
- 编写并运行你的第一个 PHP 程序。
- PHP 的基本语法,包括标记、语句、注释。
- 变量及其数据类型。
- 各种运算符。
- 控制结构(条件语句和循环)。
- 函数(内置和用户自定义)。
- 数组(索引数组和关联数组)。
- PHP 如何与 HTML 表单交互。
- 与数据库交互的基础概念。
掌握这些基础知识是开始你的 PHP 开发之旅的关键。最重要的是实践!尝试修改示例代码,编写自己的小程序,或者跟着更高级的教程构建一个简单的 Web 应用。编程是一个不断学习和练习的过程,不要害怕犯错,享受解决问题的乐趣吧!
祝你学习顺利,在 PHP 的世界里创造出属于你的精彩!