PHP语言开发基础入门实践教程(零基础版)
文章目录
- PHP语言开发基础入门实践教程(零基础版)
-
- [一、PHP 简介](#一、PHP 简介)
-
- [1.1 核心定义](#1.1 核心定义)
- [1.2 发展历程(关键节点)](#1.2 发展历程(关键节点))
- [1.3 核心优势(结合开发场景)](#1.3 核心优势(结合开发场景))
- 二、环境搭建
-
- [2.1 Windows系统(推荐XAMPP)](#2.1 Windows系统(推荐XAMPP))
- [2.2 Linux系统(CentOS 7为例)](#2.2 Linux系统(CentOS 7为例))
- [2.3 环境验证(通用方法)](#2.3 环境验证(通用方法))
- 三、基础语法
-
- [3.1 PHP标记(代码边界定义)](#3.1 PHP标记(代码边界定义))
- [3.2 注释规范(提升代码可读性)](#3.2 注释规范(提升代码可读性))
- [3.3 入门实战案例(含运行效果)](#3.3 入门实战案例(含运行效果))
- 四、变量与数据类型
-
- [4.1 变量定义规则](#4.1 变量定义规则)
- [4.2 核心数据类型及示例](#4.2 核心数据类型及示例)
- [4.3 类型转换方法](#4.3 类型转换方法)
- 五、运算符
-
- [5.1 算术运算符(数学计算)](#5.1 算术运算符(数学计算))
- [5.2 比较运算符(条件判断)](#5.2 比较运算符(条件判断))
- [5.3 逻辑运算符(组合条件)](#5.3 逻辑运算符(组合条件))
- 六、流程控制语句
-
- [6.1 条件语句(分支控制)](#6.1 条件语句(分支控制))
- [6.2 循环语句(重复执行)](#6.2 循环语句(重复执行))
- 七、函数
-
- [7.1 自定义函数(模块化编程)](#7.1 自定义函数(模块化编程))
- [7.2 常用内置函数(提升开发效率)](#7.2 常用内置函数(提升开发效率))
- 八、数组
-
- [8.1 数组的定义与分类](#8.1 数组的定义与分类)
- [8.2 数组遍历方法](#8.2 数组遍历方法)
- [8.3 实用数组函数](#8.3 实用数组函数)
- 九、总结与展望
-
- [9.1 核心知识点梳理](#9.1 核心知识点梳理)
- [9.2 实战项目入门:简易留言板(核心代码)](#9.2 实战项目入门:简易留言板(核心代码))
- [9.3 进阶学习资源](#9.3 进阶学习资源)
一、PHP 简介
1.1 核心定义
PHP(Hypertext Preprocessor,超文本预处理器)是一种服务器端脚本语言,可直接嵌入HTML中运行。区别于JavaScript(客户端执行),PHP代码在服务器端解析后,仅将生成的HTML结果返回给浏览器,安全性更高。
1.2 发展历程(关键节点)
-
1994年:由Rasmus Lerdorf开发,最初用于个人日志管理
-
2004年:PHP 5发布,引入面向对象编程(OOP)特性,奠定主流地位
-
2015年:PHP 7发布,性能提升3倍以上,修复大量安全漏洞
-
2020年:PHP 8发布,新增JIT编译器、联合类型等特性,进一步优化性能
1.3 核心优势(结合开发场景)
| 优势 | 实际应用场景 |
|---|---|
| 开源免费 | 企业无需支付授权费,降低Web项目开发成本 |
| 跨平台 | 可运行于Windows、Linux、macOS,适配各类服务器 |
| 数据库兼容性强 | 原生支持MySQL、Oracle、MongoDB等20+数据库 |
| 学习成本低 | 语法贴近自然语言,新手1-2周可上手简单开发 |
二、环境搭建
核心组件:PHP(解释器)+ Web服务器(Apache/Nginx)+ 数据库(MySQL),推荐使用集成环境简化配置。
2.1 Windows系统(推荐XAMPP)
-
下载:访问XAMPP官网,选择对应Windows版本(32/64位)
-
安装:双击运行安装包,默认勾选Apache、MySQL、PHP组件,安装路径建议选D盘(如D:\xampp)
-
配置:
-
启动控制面板:运行XAMPP Control Panel,点击Apache和MySQL后的「Start」
-
测试服务:浏览器访问
http://localhost,出现XAMPP欢迎页即为成功 -
修改端口(可选):若80端口被占用,在Apache的「Config」→「httpd.conf」中,将
Listen 80改为Listen 8080,重启Apache
-
2.2 Linux系统(CentOS 7为例)
bash
# 1. 安装Apache
yum install -y httpd
systemctl start httpd
systemctl enable httpd
# 2. 安装MySQL(MariaDB)
yum install -y mariadb-server
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation # 初始化数据库,设置root密码
# 3. 安装PHP 7.4
yum install -y epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install -y php74 php74-php-mysql
# 4. 测试
systemctl restart httpd
2.3 环境验证(通用方法)
-
创建测试文件:在Web根目录下新建
test.php(Windows:D:\xampp\htdocs;Linux:/var/www/html) -
写入代码:
<?php // PHP环境信息探针 phpinfo(); ?> -
访问测试:浏览器输入
http://服务器IP/test.php,显示PHP版本、环境配置等信息即为成功
三、基础语法
3.1 PHP标记(代码边界定义)
| 标记类型 | 语法 | 适用场景 |
|---|---|---|
| 标准标记(推荐) | <?php ?> | 所有环境通用,兼容性最好 |
| 短标记 | <? ?> | 需在php.ini中开启short_open_tag=On |
| 脚本标记 | 兼容老版本HTML编辑器 |
3.2 注释规范(提升代码可读性)
php
<?php
// 1. 单行注释:用于简短说明(快捷键Ctrl+/)
$name = "张三"; // 这里定义了用户名变量
/*
2. 多行注释:用于函数、类或复杂逻辑说明
功能:输出用户信息
参数:无
返回:无
*/
echo $name;
# 3. shell风格注释:与单行注释功能一致
?>
3.3 入门实战案例(含运行效果)
案例1:简单变量输出
php
<?php
// 定义变量并赋值
$message = "欢迎来到PHP的世界!";
// 输出变量(echo是PHP内置输出语句)
echo $message;
?>
运行效果:浏览器显示「欢迎来到PHP的世界!」
案例2:变量拼接与HTML结合
php
<?php
// 定义日期变量
$currentDate = date("Y年m月d日 H:i:s"); // date()是获取当前时间的内置函数
?>
<!DOCTYPE html>
<html>
<head><title>PHP与HTML结合</title></head>
<body>
<h3 style="color: #2c3e50;">当前时间:<?php echo $currentDate; ?></h3>
<p>这是PHP生成的动态内容</p>
</body>
</html>
运行效果:页面显示带样式的标题和当前时间(每秒刷新会更新)
案例3:常量定义与使用
php
<?php
// 定义常量(常量名通常大写,值不可修改)
define("PI", 3.14159); // 方式1:define函数
const GRAVITY = 9.8; // 方式2:const关键字(PHP 5.3+支持)
// 计算圆的面积
$radius = 5;
$area = PI * $radius * $radius;
echo "半径为{$radius}的圆面积:" . $area; // 双引号中可直接嵌入变量
?>
运行效果:「半径为5的圆面积:78.53975」
四、变量与数据类型
4.1 变量定义规则
-
必须以美元符号
$开头,如$age而非age -
首字符后可接字母、数字、下划线,不能含特殊符号(如
$user_name合法,$user-name非法) -
区分大小写(
$Name和$name是两个不同变量) -
不能使用PHP关键字(如if、for、function等)作为变量名
4.2 核心数据类型及示例
| 类型 | 说明 | 代码示例 |
|---|---|---|
| 整型(int) | 整数(正/负/零) | $age = 18; $num = -5; |
| 浮点型(float) | 带小数的数字 | $price = 99.9; $weight = 5.2; |
| 字符串(string) | 文本数据,单/双引号包裹 | $name = '张三'; $title = "PHP教程"; |
| 布尔型(bool) | 逻辑值,仅true/false | $isLogin = true; $isVip = false; |
| 空值(null) | 表示变量未赋值 | $addr = null; |
4.3 类型转换方法
php
<?php
// 1. 强制类型转换((目标类型)变量)
$numStr = "123.45";
$intNum = (int)$numStr; // 转换为整型:123(小数部分舍弃)
$floatNum = (float)$numStr;// 转换为浮点型:123.45
// 2. 自动类型转换(运算时自动触发)
$a = 10;
$b = "5";
$sum = $a + $b; // 自动将$b转为整型,结果15
// 3. 检测变量类型
echo gettype($sum); // 输出:integer
var_dump($numStr); // 更详细:string(6) "123.45"
?>
五、运算符
5.1 算术运算符(数学计算)
| 运算符 | 功能 | 示例 | 结果 |
|---|---|---|---|
| + | 加法 | a=3; b=2; a + a+ a+b | 5 |
| - | 减法 | a=3; b=2; a − a- a−b | 1 |
| * | 乘法 | a=3; b=2; a ∗ a* a∗b | 6 |
| / | 除法(返回浮点型) | a=5; b=2; a / a/ a/b | 2.5 |
| % | 取余(余数符号与被除数一致) | a=5; b=2; a a% ab | 1 |
5.2 比较运算符(条件判断)
php
<?php
$score = 85;
// 比较运算符返回布尔值(true/false)
var_dump($score > 60); // true(大于)
var_dump($score == 85); // true(等于,仅比较值)
var_dump($score === "85");// false(全等,比较值和类型)
var_dump($score != 90); // true(不等于)
var_dump($score <= 100); // true(小于等于)
?>
5.3 逻辑运算符(组合条件)
用于连接多个条件,常见于if、while等语句中
php
<?php
$age = 20;
$hasId = true;
// 逻辑与(&&):两个条件都为true才返回true
if ($age >= 18 && $hasId) {
echo "可办理银行卡";
}
// 逻辑或(||):只要一个条件为true就返回true
$isVip = false;
$isNew = true;
if ($isVip || $isNew) {
echo "可享受新人优惠";
}
// 逻辑非(!):取反条件结果
if (!$isVip) {
echo "非VIP用户";
}
?>
六、流程控制语句
6.1 条件语句(分支控制)
案例:成绩等级判断(if...elseif...else)
php
<?php
$score = 78;
if ($score >= 90) {
echo "等级:优秀";
} elseif ($score >= 80) {
echo "等级:良好";
} elseif ($score >= 60) {
echo "等级:及格";
} else {
echo "等级:不及格";
}
?>
案例:商品分类查询(switch)
php
<?php
$goodsType = "electronics"; // 商品类型:electronics(电子)、clothes(服装)
switch ($goodsType) {
case "electronics":
echo "电子类商品,支持7天无理由退换";
break; // 跳出switch,避免执行后续case
case "clothes":
echo "服装类商品,未拆吊牌可退换";
break;
default:
echo "普通商品,按平台规则执行";
}
?>
6.2 循环语句(重复执行)
案例1:打印1-10的数字(for循环)
php
<?php
// for(初始化; 条件; 增量)
for ($i = 1; $i <= 10; $i++) {
echo $i . " "; // 输出:1 2 3 ... 10
}
?>
案例2:打印九九乘法表(嵌套for循环)
php
<?php
for ($i = 1; $i <= 9; $i++) { // 控制行数
for ($j = 1; $j <= $i; $j++) { // 控制每行的列数
echo "{$j}×{$i}=" . ($j*$i) . "\t";
}
echo "<br/>"; // 换行
}
?>
案例3:累加1-100的和(while循环)
php
<?php
$sum = 0;
$num = 1;
// while(条件):条件成立则执行循环体
while ($num <= 100) {
$sum += $num; // 等价于$sum = $sum + $num
$num++;
}
echo "1-100的和:" . $sum; // 结果:5050
?>
七、函数
7.1 自定义函数(模块化编程)
php
<?php
/**
* 自定义函数:计算两数之和
* @param int $a 第一个数字
* @param int $b 第二个数字
* @return int 两数之和
*/
function add($a, $b) {
$result = $a + $b;
return $result; // 返回计算结果
}
// 调用函数
$total = add(10, 20);
echo "10+20=" . $total; // 输出:10+20=30
// 带默认参数的函数
function sayHello($name = "访客") {
echo "你好," . $name;
}
sayHello(); // 输出:你好,访客
sayHello("张三"); // 输出:你好,张三
?>
7.2 常用内置函数(提升开发效率)
| 函数分类 | 函数名 | 功能 | 示例 |
|---|---|---|---|
| 字符串处理 | strlen() | 获取字符串长度 | strlen("PHP") → 3 |
| substr() | 截取字符串 | substr("Hello",0,3) → "Hel" | |
| 数组操作 | count() | 获取数组元素个数 | count([1,2,3]) → 3 |
| sort() | 数组排序(升序) | sort($arr) → 无返回,直接修改数组 | |
| 时间处理 | date() | 格式化时间 | date("Y-m-d") → 2025-01-19 |
八、数组
8.1 数组的定义与分类
php
<?php
// 1. 索引数组(默认数字下标,从0开始)
$fruits = array("苹果", "香蕉", "橙子");
// 简化写法(PHP 5.4+)
$fruits = ["苹果", "香蕉", "橙子"];
echo $fruits[0]; // 输出:苹果
// 2. 关联数组(自定义字符串下标,适合存储键值对数据)
$user = [
"name" => "张三",
"age" => 20,
"gender" => "男"
];
echo $user["name"]; // 输出:张三
// 3. 多维数组(数组嵌套数组,适合存储复杂数据)
$students = [
["name" => "张三", "score" => 85],
["name" => "李四", "score" => 92]
];
echo $students[1]["score"]; // 输出:92
?>
8.2 数组遍历方法
方法1:foreach遍历(推荐,无需关心下标)
php
<?php
$user = ["name" => "张三", "age" => 20, "gender" => "男"];
// 遍历关联数组(获取键和值)
foreach ($user as $key => $value) {
echo "{$key}:{$value}<br/>";
}
// 遍历索引数组(仅获取值)
$fruits = ["苹果", "香蕉", "橙子"];
foreach ($fruits as $fruit) {
echo $fruit . " ";
}
?>
方法2:for循环遍历(适合索引数组)
php
<?php
$fruits = ["苹果", "香蕉", "橙子"];
$length = count($fruits); // 获取数组长度
for ($i = 0; $i < $length; $i++) {
echo "第" . ($i+1) . "个水果:" . $fruits[$i] . "<br/>";
}
?>
8.3 实用数组函数
php
<?php
// 1. 数组排序
$nums = [3, 1, 4, 2];
sort($nums); // 升序排序
print_r($nums); // 输出:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
// 2. 数组合并
$arr1 = [1, 2];
$arr2 = [3, 4];
$merged = array_merge($arr1, $arr2);
print_r($merged); // 输出:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
// 3. 数组搜索
$fruits = ["苹果", "香蕉", "橙子"];
$index = array_search("香蕉", $fruits);
echo "香蕉的下标:" . $index; // 输出:1
?>
九、总结与展望
9.1 核心知识点梳理
-
环境基础:PHP运行依赖Web服务器+解释器,集成环境(XAMPP)是新手首选
-
语法核心:变量用$定义,代码需包裹在<?php ?>中,echo用于输出
-
数据处理:掌握6种基本数据类型,学会类型转换和数组操作
-
流程控制:if/switch实现分支,for/while实现循环,函数实现代码复用
9.2 实战项目入门:简易留言板(核心代码)
php
<?php
// 存储留言的数组(实际开发中用数据库)
$messages = [];
// 处理表单提交
if ($_POST) { // 判断是否有POST提交
$username = $_POST["username"];
$content = $_POST["content"];
$time = date("Y-m-d H:i");
// 添加留言到数组
$messages[] = [
"username" => $username,
"content" => $content,
"time" => $time
];
}
?>
<!DOCTYPE html>
<html>
<body>
<h2>简易留言板</h2>
<form method="post">
用户名:<input type="text" name="username" required><br/>
留言内容:<textarea name="content" required></textarea><br/>
<button type="submit">提交留言</button>
</form>
<h3>留言列表</h3>
<?php foreach ($messages as $msg) : ?>
<div style="border:1px solid #eee; padding:10px; margin:5px 0;">
<p>用户:<?php echo $msg["username"]; ?> 时间:<?php echo $msg["time"]; ?></p>
<p><?php echo $msg["content"]; ?></p>
</div>
<?php endforeach; ?>
</body>
</html>
9.3 进阶学习资源
-
官方文档:PHP 官方手册(最权威的参考资料)
-
实战课程:PHP+MySQL开发博客系统、电商网站入门项目
-
书籍推荐:《PHP和MySQL Web开发》《现代PHP》
-
社区交流:Stack Overflow(技术问题)、PHP中文网论坛