PHP教程:新手入门介绍 – wiki基地


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 为例,其他类似):

  1. 访问 XAMPP 官网 (apachefriends.org) 下载对应你操作系统的版本。
  2. 运行安装程序,按照提示进行安装。选择你需要的组件(至少需要 Apache 和 PHP)。
  3. 安装完成后,打开 XAMPP 控制面板。
  4. 启动 Apache 和 MySQL 服务。如果服务成功启动,对应的模块名称背景会变成绿色。
  5. 打开你的浏览器,访问 http://localhosthttp://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!”。

  1. 打开一个纯文本编辑器(如 VS Code, Sublime Text, Notepad++)。
  2. 创建一个新文件。
  3. 输入以下代码:

    “`php
    <!DOCTYPE html>


    我的第一个 PHP 页面

    <?php
    echo “Hello, World!”;
    ?>



    “`

  4. 将文件保存为 hello.php(确保扩展名是 .php)到你的 Web 服务器根目录(htdocswww)下。

  5. 打开你的 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 等)对大小写不敏感。echoECHOEcho 是等效的,但为了代码的可读性,建议始终使用小写。

“`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 (布尔值): 只有两个可能的值:truefalse (不区分大小写)。通常用于条件判断。
    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. 比较运算符

用于比较两个值,并返回布尔值 (truefalse)。
* == 相等(只比较值,不比较类型)
* === 全等(比较值和类型)
* !=<> 不相等(只比较值)
* !== 不全等(比较值和类型)
* > 大于
* < 小于
* >= 大于等于
* <= 小于等于
* <=> 太空船运算符(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 循环有三个部分:

    1. 初始化计数器 ( $i = 0;)
    2. 设置循环条件 ( $i < 10;)
    3. 递增/递减计数器 ( $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 中。适合敏感信息和大量数据。

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。

与数据库交互的基本步骤:

  1. 连接数据库: 使用 PHP 函数建立与数据库服务器的连接(需要数据库地址、用户名、密码、数据库名)。
  2. 执行 SQL 查询: 向数据库发送 SQL 语句(如 SELECT, INSERT, UPDATE, DELETE)。
  3. 处理查询结果: 对数据库返回的数据进行处理(例如,将查询结果显示在网页上)。
  4. 关闭数据库连接: 在脚本执行完毕后关闭连接,释放资源。

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 的世界里创造出属于你的精彩!


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部