教程简介

本教程是“零基础学 PHP:从入门到实战”系列的第二模块,专为没有任何编程经验的初学者设计。教程聚焦于 PHP 基础语法,通过循序渐进的方式,帮助学习者掌握 PHP 的核心语法元素。学习目标包括:理解 PHP 基本语法结构,学会变量声明和使用;掌握数据类型和运算符,能够进行数据操作;熟练运用条件语句和循环控制程序流程;学会定义函数和操作数组;最终通过综合实战项目,将所学知识应用于简单 PHP 应用的开发。教程强调动手实践,每个章节都配有实操练习,确保学习者能够巩固知识点。完成本模块后,学习者将具备独立编写简单 PHP 脚本的能力,为后续学习 PHP 高级特性和 Web 开发打下坚实基础。本教程的价值在于提供了一条清晰的学习路径,让零基础用户轻松入门 PHP,避免常见误区,快速提升编程技能。

第 1 章:PHP 语法基础与变量入门

章节介绍

学习目标

通过本章学习,您将能够:

  • 理解 PHP 基本语法结构,包括开始和结束标签
  • 掌握变量声明、命名规则和使用方法
  • 熟练使用 echo 语句输出内容
  • 理解变量类型和作用域的基本概念
  • 编写并运行简单的 PHP 脚本

在本教程中的作用

本章是整个 PHP 学习旅程的起点,为您奠定坚实的语法基础。变量是程序存储和处理数据的基础,正确的变量使用习惯是编写高质量 PHP 代码的前提。

与前面章节的衔接

作为模块二的起始章节,本章假设您已经完成了模块一的开发环境搭建,熟悉基本的代码编辑器使用,并了解如何运行 PHP 脚本。

主要内容概览

本章将系统讲解 PHP 的基本语法结构、注释写法、变量声明与使用、数据类型简介以及变量作用域的基础概念。通过大量实践练习,帮助您快速掌握 PHP 编程的基本要素。

核心概念讲解

PHP 基本语法结构

PHP 脚本以<?php开始,以?>结束。在现代 PHP 开发中,如果文件只包含 PHP 代码,通常省略结束标签以避免意外输出空白字符。

变量基础

变量是用于存储数据的容器。PHP 中的变量具有以下特点:

  • 以美元符号$开头
  • 变量名必须以字母或下划线开头
  • 变量名只能包含字母、数字和下划线
  • 变量名区分大小写

注释的重要性

注释是代码文档的重要组成部分,分为单行注释(// #)和多行注释(/* */)。良好的注释习惯能提高代码可读性和可维护性。

变量作用域基础

变量作用域指变量在代码中的可见范围。PHP 有局部作用域、全局作用域和静态作用域等,本章重点介绍前两种。

代码示例

示例 1:基本 PHP 脚本结构

<?php
// 这是单行注释
# 这也是单行注释
/*
这是多行注释
可以跨越多行
*/

// 第一个PHP脚本
echo "Hello, PHP World!"; // 输出文本到浏览器
?>

预期输出:

Hello, PHP World!

示例 2:变量声明和基本操作

<?php
// 变量声明和赋值
$name = "张三";          // 字符串变量
$age = 25;              // 整数变量
$height = 1.75;         // 浮点数变量
$isStudent = true;      // 布尔值变量
// 输出变量值
echo "姓名:" . $name . "<br>";      // 使用点号连接字符串
echo "年龄:" . $age . "岁<br>";
echo "身高:" . $height . "米<br>";
echo "是否是学生:" . $isStudent . "<br>";

// 变量重新赋值
$age = 26;
echo "明年年龄:" . $age . "岁<br>";
?>

预期输出:

姓名:张三
年龄:25岁
身高:1.75米
是否是学生:1
明年年龄:26岁

示例 3:变量命名规范和错误示例

<?php
// 正确的变量命名
$userName = "李四";      // 驼峰命名法
$user_age = 30;         // 下划线命名法
$_privateData = "秘密";  // 以下划线开头
$counter1 = 10;         // 包含数字
// 输出正确命名的变量
echo "用户名:" . $userName . "<br>";
echo "用户年龄:" . $user_age . "<br>";

// 错误的变量命名(取消注释会报错)
// $123number = 100;      // 错误:以数字开头
// $user-name = "王五";    // 错误:包含连字符
// $function = "test";    // 错误:使用保留字
// 变量名区分大小写
$color = "红色";
$Color = "蓝色";
echo "小写color:" . $color . "<br>";
echo "大写Color:" . $Color . "<br>";
?>

预期输出:

用户名:李四
用户年龄:30
小写color:红色
大写Color:蓝色

示例 4:变量作用域基础

<?php
$globalVar = "我是全局变量";  // 全局变量
function testFunction() {
    $localVar = "我是局部变量";  // 局部变量,只在函数内有效
// 在函数内访问全局变量需要使用global关键字
global $globalVar;
    echo "函数内访问全局变量:" . $globalVar . "<br>";
    echo "函数内局部变量:" . $localVar . "<br>";
}

// 调用函数
testFunction();

// 在函数外访问变量
echo "函数外全局变量:" . $globalVar . "<br>";

// 下面的代码会报错,因为$localVar在函数外不可见
// echo "函数外访问局部变量:" . $localVar;
?>

预期输出:

函数内访问全局变量:我是全局变量
函数内局部变量:我是局部变量
函数外全局变量:我是全局变量

示例 5:综合变量操作

<?php
// 用户信息变量
$firstName = "王";
$lastName = "小明";
$birthYear = 1995;
$currentYear = 2024;

// 计算年龄
$age = $currentYear - $birthYear;

// 字符串拼接
$fullName = $lastName . $firstName;
$greeting = "您好," . $fullName . "!";

// 输出完整信息
echo $greeting . "<br>";
echo "您出生于" . $birthYear . "年<br>";
echo "今年是" . $currentYear . "年<br>";
echo "您的年龄是:" . $age . "岁<br>";

// 使用变量引用
$originalValue = 100;
$valueReference = &$originalValue;  // 通过引用赋值
echo "原始值:" . $originalValue . "<br>";
echo "引用值:" . $valueReference . "<br>";

// 修改引用值会影响原始值
$valueReference = 200;
echo "修改引用后原始值:" . $originalValue . "<br>";
?>

预期输出:

您好,小明王!
您出生于1995年
今年是2024年
您的年龄是:29岁
原始值:100
引用值:100
修改引用后原始值:200

实战项目

项目名称:个人简历生成器

项目需求分析

开发一个简单的个人简历生成脚本,能够:

  • 存储个人基本信息(姓名、年龄、职业、技能等)
  • 格式化输出完整的简历内容
  • 支持信息的动态更新
  • 提供基本的简历模板
技术方案
  • 使用变量存储各种个人信息
  • 通过字符串拼接和格式化输出简历
  • 实现简单的信息更新功能
分步骤实现

步骤 1:基础信息设置

<?php
// 个人基本信息变量
$fullName = "陈小华";
$age = 28;
$profession = "Web开发工程师";
$email = "chenxiaohua@example.com";
$phone = "138-0013-8000";
$address = "北京市朝阳区";

// 技能列表
$skill1 = "PHP编程";
$skill2 = "MySQL数据库";
$skill3 = "HTML/CSS";
$skill4 = "JavaScript";

// 工作经验
$experienceYears = 3;
$currentCompany = "某科技公司";
?>

步骤 2:简历内容生成

<?php
// 生成简历标题
$resumeTitle = "个人简历 - " . $fullName;

// 生成联系信息部分
$contactInfo = "联系电话:" . $phone . "\n" .
               "电子邮箱:" . $email . "\n" .
               "联系地址:" . $address;

// 生成专业技能部分
$skills = "专业技能:\n" .
          "1. " . $skill1 . "\n" .
          "2. " . $skill2 . "\n" .
          "3. " . $skill3 . "\n" .
          "4. " . $skill4;

// 生成工作经历部分
$workExperience = "工作经历:\n" .
                  "拥有" . $experienceYears . "年" . $profession . "经验\n" .
                  "目前就职于:" . $currentCompany;
?>

步骤 3:完整简历输出

<?php
// 完整的简历生成函数
function generateResume($name, $age, $profession, $contact, $skills, $experience) {
    $resume = "==============================\n";
    $resume .= "          个人简历\n";
    $resume .= "==============================\n\n";

    $resume .= "基本信息:\n";
    $resume .= "姓名:" . $name . "\n";
    $resume .= "年龄:" . $age . "岁\n";
    $resume .= "职业:" . $profession . "\n\n";

    $resume .= "联系信息:\n" . $contact . "\n\n";
    $resume .= $skills . "\n\n";
    $resume .= $experience . "\n";
    $resume .= "==============================";

    return $resume;
}

// 生成并输出简历
$completeResume = generateResume($fullName, $age, $profession, $contactInfo, $skills, $workExperience);
echo "<pre>" . $completeResume . "</pre>";
?>

步骤 4:信息更新功能

<?php
// 信息更新功能
function updateResumeInfo(&$name, &$age, &$profession, $newName, $newAge, $newProfession) {
    $name = $newName;
    $age = $newAge;
    $profession = $newProfession;

    return "个人信息更新成功!";
}

// 测试更新功能
echo "更新前职业:" . $profession . "<br>";
$updateMessage = updateResumeInfo($fullName, $age, $profession, "陈小华", 29, "高级PHP工程师");
echo $updateMessage . "<br>";
echo "更新后职业:" . $profession . "<br>";

// 生成更新后的简历
$updatedResume = generateResume($fullName, $age, $profession, $contactInfo, $skills, $workExperience);
echo "<pre>" . $updatedResume . "</pre>";
?>
项目测试指南
  1. 将完整代码保存为resume_generator.php
  2. 在本地 PHP 环境中运行该文件
  3. 检查输出格式是否正确
  4. 尝试修改个人信息,验证更新功能
项目扩展建议
  • 添加教育背景信息
  • 实现项目经验动态添加
  • 添加简历导出功能
  • 支持多种简历模板选择

最佳实践

变量命名规范

<?php
// 良好的命名实践
$userCount = 100;                    // 清晰表达变量用途
$isLoggedIn = true;                  // 布尔值使用is/has/can前缀
$maxRetryAttempts = 3;               // 使用完整的描述性名称
$customerEmailAddress = "user@example.com";

// 应避免的命名方式
$n = 10;                             // 无意义名称
$flag = true;                        // 模糊的布尔值名称
$tmp = "data";                       // 临时变量名长期使用
?>

代码注释规范

<?php
/**
 * 计算用户年龄
*
 * @param int $birthYear 出生年份
* @param int $currentYear 当前年份
* @return int 计算得到的年龄
*/
function calculateAge($birthYear, $currentYear) {
    // 验证输入参数有效性
if ($birthYear > $currentYear) {
        // 出生年份不能大于当前年份
return 0;
    }

    return $currentYear - $birthYear; // 返回年龄计算结果
}

// 使用示例
$age = calculateAge(1990, 2024);
echo "年龄:" . $age;
?>

安全性考虑

虽然本章主要介绍基础语法,但需要建立基本的安全意识:

<?php
// 不安全的数据处理示例
$userInput = "'; DROP TABLE users; --";  // 恶意输入
$query = "SELECT * FROM users WHERE name = '" . $userInput . "'";
// 这将导致SQL注入攻击
// 基础防护意识
$userInput = "'; DROP TABLE users; --";
// 在后续章节将学习如何正确过滤和转义用户输入
$safeInput = htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');
echo "安全处理后的输入:" . $safeInput;
?>

性能优化技巧

<?php
// 字符串连接优化
// 不推荐的写法(在循环中)
$result = "";
for ($i = 0; $i < 1000; $i++) {
    $result .= "数据" . $i;  // 每次连接都创建新字符串
}

// 推荐的写法
$parts = [];
for ($i = 0; $i < 1000; $i++) {
    $parts[] = "数据" . $i;
}
$result = implode("", $parts);  // 一次性连接
?>

练习题与挑战

基础练习题

练习 1:变量基础操作(难度:★☆☆☆☆)
编写一个 PHP 脚本,声明以下变量并输出它们的值:

  • 你的姓名(字符串)
  • 你的年龄(整数)
  • 你的身高(浮点数)
  • 你是否喜欢编程(布尔值)
    参考答案:
<?php
$name = "你的姓名";
$age = 25;
$height = 1.75;
$likeProgramming = true;

echo "姓名:" . $name . "<br>";
echo "年龄:" . $age . "<br>";
echo "身高:" . $height . "米<br>";
echo "喜欢编程:" . ($likeProgramming ? "是" : "否") . "<br>";
?>

练习 2:字符串拼接(难度:★☆☆☆☆)
创建两个字符串变量,分别存储你的名和姓,然后将它们拼接成完整的姓名并输出。
参考答案:

<?php
$firstName = "张";
$lastName = "三";
$fullName = $lastName . $firstName;

echo "我的全名是:" . $fullName . "<br>";
?>

进阶练习题

练习 3:个人信息计算器(难度:★★☆☆☆)
编写一个脚本,根据出生年份计算年龄,并根据年龄判断是否成年(18 岁及以上)。
参考答案:

<?php
$birthYear = 2000;
$currentYear = 2024;
$age = $currentYear - $birthYear;
$isAdult = $age >= 18;

echo "出生年份:" . $birthYear . "<br>";
echo "当前年份:" . $currentYear . "<br>";
echo "年龄:" . $age . "<br>";
echo "是否成年:" . ($isAdult ? "是" : "否") . "<br>";
?>

练习 4:温度转换器(难度:★★☆☆☆)
创建一个摄氏温度转华氏温度的转换程序。公式:华氏温度 = 摄氏温度 × 9/5 + 32

参考答案:

<?php
$celsius = 25;  // 摄氏温度
$fahrenheit = $celsius * 9/5 + 32;  // 华氏温度
echo "摄氏温度:" . $celsius . "°C<br>";
echo "华氏温度:" . $fahrenheit . "°F<br>";
?>

综合挑战题

挑战 1:简易购物车系统(难度:★★★☆☆)
创建一个简单的购物车系统,包含以下功能:

  • 定义 3 种商品的名称和价格
  • 计算商品总价
  • 应用折扣(如满 100 减 10)
  • 输出详细的购物清单和最终价格
    参考答案:
<?php
// 商品信息
$product1 = "PHP教程书";
$price1 = 45.5;
$product2 = "编程鼠标";
$price2 = 89.0;
$product3 = "机械键盘";
$price3 = 299.0;

// 购买数量
$quantity1 = 2;
$quantity2 = 1;
$quantity3 = 1;

// 计算小计和总计
$subtotal1 = $price1 * $quantity1;
$subtotal2 = $price2 * $quantity2;
$subtotal3 = $price3 * $quantity3;
$total = $subtotal1 + $subtotal2 + $subtotal3;

// 应用折扣
$discount = 0;
if ($total >= 100) {
    $discount = 10;
}
$finalTotal = $total - $discount;

// 输出购物清单
echo "=== 购物清单 ===<br>";
echo $product1 . " × " . $quantity1 . " = ¥" . $subtotal1 . "<br>";
echo $product2 . " × " . $quantity2 . " = ¥" . $subtotal2 . "<br>";
echo $product3 . " × " . $quantity3 . " = ¥" . $subtotal3 . "<br>";
echo "---------------<br>";
echo "商品总计:¥" . $total . "<br>";
echo "折扣:-¥" . $discount . "<br>";
echo "最终价格:¥" . $finalTotal . "<br>";
?>

挑战 2:用户信息验证系统(难度:★★★☆☆)
创建一个用户信息验证脚本,检查以下信息是否符合要求:

  • 用户名:长度在 3-20 字符之间
  • 年龄:18-100 岁之间
  • 邮箱:包含@符号
    输出每个验证项的结果。
    参考答案:
<?php
// 用户信息
$username = "john_doe123";
$age = 25;
$email = "john@example.com";

// 验证规则
$isUsernameValid = strlen($username) >= 3 && strlen($username) <= 20;
$isAgeValid = $age >= 18 && $age <= 100;
$isEmailValid = strpos($email, '@') !== false;

// 输出验证结果
echo "用户名 '" . $username . "' 验证:" . ($isUsernameValid ? "通过" : "不通过") . "<br>";
echo "年龄 " . $age . " 验证:" . ($isAgeValid ? "通过" : "不通过") . "<br>";
echo "邮箱 '" . $email . "' 验证:" . ($isEmailValid ? "通过" : "不通过") . "<br>";

// 总体验证结果
$allValid = $isUsernameValid && $isAgeValid && $isEmailValid;
echo "<br>总体验证结果:" . ($allValid ? "所有信息有效" : "存在无效信息") . "<br>";
?>

章节总结

重点知识回顾

  • PHP 基本语法<?php ?>标签的使用和注释写法
  • 变量声明:以$开头,遵循命名规则,支持多种数据类型
  • 变量操作:赋值、输出、字符串拼接等基本操作
  • 变量作用域:全局变量和局部变量的概念及使用方式

技能掌握要求

完成本章学习后,您应该能够:

  • 正确编写基本的 PHP 脚本结构
  • 声明和使用各种类型的变量
  • 使用 echo 语句输出变量和文本内容
  • 理解变量作用域的基本概念
  • 编写简单的个人信息处理脚本

进一步学习建议

  1. 多练习变量操作,熟悉不同类型变量的特性
  2. 尝试编写更复杂的个人信息处理程序
  3. 预习下一章的数据类型详解,了解 PHP 支持的所有数据类型
  4. 在实际项目中应用所学知识,如创建简单的计算器或信息表单

常见问题解答

Q:为什么我的变量输出显示异常?
A:检查变量名拼写是否正确,确保使用了正确的引号和分号。
Q:全局变量为什么在函数内无法访问?
A:在函数内访问全局变量需要使用global关键字或$GLOBALS数组。
Q:变量命名有哪些最佳实践?
A:使用有意义的名称,遵循一致的命名约定(驼峰或下划线),避免使用 PHP 保留字。
通过本章的学习,您已经掌握了 PHP 编程的基础要素。在下一章中,我们将深入探讨 PHP 的数据类型系统,学习如何更好地处理和操作各种类型的数据。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐