PHP语言开发基础入门实践教程(零基础版)

PHP语言开发基础入门实践教程(零基础版)

文章目录

一、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)

  1. 下载:访问XAMPP官网,选择对应Windows版本(32/64位)

  2. 安装:双击运行安装包,默认勾选Apache、MySQL、PHP组件,安装路径建议选D盘(如D:\xampp)

  3. 配置:

    • 启动控制面板:运行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 环境验证(通用方法)

  1. 创建测试文件:在Web根目录下新建test.php(Windows:D:\xampp\htdocs;Linux:/var/www/html)

  2. 写入代码:
    <?php // PHP环境信息探针 phpinfo(); ?>

  3. 访问测试:浏览器输入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 复制代码
&lt;?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 核心知识点梳理

  1. 环境基础:PHP运行依赖Web服务器+解释器,集成环境(XAMPP)是新手首选

  2. 语法核心:变量用$定义,代码需包裹在<?php ?>中,echo用于输出

  3. 数据处理:掌握6种基本数据类型,学会类型转换和数组操作

  4. 流程控制: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中文网论坛

相关推荐
CSDN_RTKLIB11 分钟前
C++取模与取余
开发语言·c++
星河耀银海28 分钟前
C++开发入门——环境搭建与第一个程序
开发语言·c++·策略模式
还不秃顶的计科生32 分钟前
defaultdict讲解
开发语言·javascript·ecmascript
花归去37 分钟前
echarts 柱状图包含右侧进度
开发语言·前端·javascript
wjs202438 分钟前
Java 数组
开发语言
码农水水39 分钟前
大疆Java面试被问:TCC事务的悬挂、空回滚问题解决方案
java·开发语言·人工智能·面试·职场和发展·单元测试·php
qq_25183645744 分钟前
基于java Web 个人网站系统设计与实现
java·开发语言·数据库
Eternity∞1 小时前
基于Linux系统vim编译器情况下的C语言学习
linux·c语言·开发语言·学习·vim
周末吃鱼1 小时前
Lambda作用域
java·开发语言
故事不长丨1 小时前
C#进制转换:从基础原理到实战应用
开发语言·c#·进制转换·16进制·2进制·10进制