零基础 PHP 编程从入门到实战:模块二 PHP 基础语法精讲:零基础入门到实战应用-1
教程简介
本教程是“零基础学 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>";
?>
项目测试指南
- 将完整代码保存为
resume_generator.php - 在本地 PHP 环境中运行该文件
- 检查输出格式是否正确
- 尝试修改个人信息,验证更新功能
项目扩展建议
- 添加教育背景信息
- 实现项目经验动态添加
- 添加简历导出功能
- 支持多种简历模板选择
最佳实践
变量命名规范
<?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 语句输出变量和文本内容
- 理解变量作用域的基本概念
- 编写简单的个人信息处理脚本
进一步学习建议
- 多练习变量操作,熟悉不同类型变量的特性
- 尝试编写更复杂的个人信息处理程序
- 预习下一章的数据类型详解,了解 PHP 支持的所有数据类型
- 在实际项目中应用所学知识,如创建简单的计算器或信息表单
常见问题解答
Q:为什么我的变量输出显示异常?
A:检查变量名拼写是否正确,确保使用了正确的引号和分号。
Q:全局变量为什么在函数内无法访问?
A:在函数内访问全局变量需要使用global关键字或$GLOBALS数组。
Q:变量命名有哪些最佳实践?
A:使用有意义的名称,遵循一致的命名约定(驼峰或下划线),避免使用 PHP 保留字。
通过本章的学习,您已经掌握了 PHP 编程的基础要素。在下一章中,我们将深入探讨 PHP 的数据类型系统,学习如何更好地处理和操作各种类型的数据。
更多推荐


所有评论(0)