🌀 鱼油のB10g

✦ 不定期更新技术随想

✦ 分享奇妙发现

📌 近期动态:

探索AI和工具使用...

第7章 第76课

PHP基础入门与语法简介

PHP就像编程界的"方便面"——简单快速却能解决温饱问题,但有点容易腻。想象你在宿舍写社团招新页面:

<?php
// 基础语法框架
$club_name = "电子竞技社"; // 定义变量
?>
<!DOCTYPE html>
<html>
<body>
<h1><?php print "欢迎加入" . $club_name; ?></h1> <!-- 嵌入PHP输出 -->
<?php echo "<p>招新截止:" . date("Y-m-d") . "</p>"; ?>
</body>
</html>

PHP核心优势

  1. 快速搭建:半小时搞定动态网页(比Java写Servlet快三倍)
  2. 弱类型:变量不用声明类型,$count = "10"; 也能做数学运算
  3. 嵌入HTML:在网页中直接插入动态内容,像写填空题

PHP基础:echo, print与变量

咱们用学生会报名系统举例:

// 变量定义与输出
$max_members = 30; // 整型变量
$club = "辩论队"; // 字符串变量
$is_open = true;// 布尔型变量

print "社团名称:" . $club; // print输出字符串
echo " 剩余名额:", $max_members - 15; // echo可输出多个参数

// 弱类型自动转换
$total = "20名";
$add = 5;
echo $total + $add; // 输出25(PHP自动丢弃"名"字)
// 注意:这种转换可能引发bug!

PHP变量作用域与数据类型简介

做课程表系统时踩过的坑:

$course = "高等数学"; // 全局变量

function showCourse() {
$time = "周一1-2节"; // 局部变量

// 错误!无法访问全局变量
echo $course;

// 正确:使用global引入
global $course;
echo $course . $time; // 输出"高等数学周一1-2节"
}

// 静态变量:记录访问次数
function countView() {
static $views = 0;
echo "页面访问:" . ++$views . "次";
}
countView(); // 第一次输出1
countView(); // 第二次输出2

数据类型对照表

类型 示例 现实场景
整型 $age = 19; 学生年龄统计
浮点型 $gpa = 3.75; 绩点计算
字符串 $id = "20211314"; 学号存储
布尔型 $is_pass = true; 考试成绩判断

PHP布尔型与数组详解

布尔型:条件判断核心

// 考试及格检查
$score = 58;
$is_pass = ($score >= 60); // false

if (!$is_pass) {
echo "需要补考!"; // 输出
}

// 与或非逻辑
$has_attendance = true;
$makeup_pass = false;
if ($has_attendance || $makeup_pass) {
echo "获得学分"; // 输出
}

数组:数据管理神器

1. 数值数组(社团成员列表)

$members = array("张三", "李四", "王五");
// 简写:$members = ["张三", "李四", "王五"];
$members[] = "赵六"; // 添加成员
echo $members[2]; // 输出"王五"

2. 关联数组(学生信息)

$student = [
"name" => "陈小明",
"id" => "20211234",
"gpa" => 3.8
];
echo $student["name"]; // 输出"陈小明"

3. 多维数组(班级花名册)

$class = [
[
"name" => "张三",
"courses" => ["高数","英语"]
],
[
"name" => "李四",
"courses" => ["物理","C语言"]
]
];
echo $class[1]["courses"][0]; // 输出"物理"

遍历技巧

// foreach遍历关联数组
foreach ($student as $key => $value) {
echo "$key: $value<br>";
// 输出:
// name: 陈小明
// id: 20211234
// gpa: 3.8
}

// array_map处理数组
$scores = [58, 92, 75];
$passed = array_map(function($score) {
return $score >= 60;
}, $scores);
// $passed = [false, true, true]

PHP字符串与数值类型操作

字符串:表单处理核心

// 报名表单处理
$name = $_POST['name']; // " 李雷 "
$email = "lilei@shu.edu.cn";

// 常用操作
$clean_name = trim($name); // 去空格 → "李雷"
$username = strstr($email, '@', true); // 截取 → "lilei"
$welcome = sprintf("欢迎%s,你的邮箱是%s", $clean_name, $email); // 格式化

// 安全过滤
$input = "<script>alert('hack')</script>";
echo htmlspecialchars($input);
// 输出转义后的安全文本

数值计算:成绩统计案例

// 考试成绩数组
$scores = [85, 92, 78, 60, 54];

// 基本计算
$sum = array_sum($scores); // 总和
$count = count($scores);// 数量
$avg = round($sum / $count, 1); // 平均分(保留1位小数)

// 类型转换
$full_mark = "100"; // 字符串
$my_score = 85.5;// 浮点数
$result = $full_mark + $my_score; // 自动转数值 → 185.5

// 严格比较
if ($my_score === 85) {
echo "整数85"; // 不执行(浮点85.5≠整数85)
}

实战:学生成绩管理系统

结合所有知识点的小案例:

<?php
// 1. 数据存储
$students = [
["name" => "张三", "math" => 85, "english" => 92],
["name" => "李四", "math" => 78, "english" => 63]
];

// 2. 逻辑处理
function checkPass($scores) {
return array_sum($scores) >= 120; // 总分>=120算通过
}

// 3. 输出展示
echo "<table border='1'>";
echo "<tr><th>姓名</th><th>数学</th><th>英语</th><th>状态</th></tr>";

foreach ($students as $stu) {
$is_pass = checkPass([$stu['math'], $stu['english']]);
$status = $is_pass ? "<span style='color:green'>通过</span>" : "补考";

echo "<tr>
<td>{$stu['name']}</td>
<td>{$stu['math']}</td>
<td>{$stu['english']}</td>
<td>$status</td>
</tr>";
}
echo "</table>";
?>

学习建议

  1. 动手实验:用PHP重写你的课程表/社团管理系统
  2. 避坑指南
  • 字符串比较用===避免类型转换问题
  • 用户输入必须用htmlspecialchars()过滤
  1. 升级路线
graph LR A[基础语法] --> B[表单处理] B --> C[数据库操作] C --> D[框架开发]

PHP就像自行车,学会就能在校园信息化道路上自由骑行。下期带大家用PHP+MySQL开发图书馆系统,需要的同学点个关注~ (๑•̀ㅂ•́)و✧

posted on 2025-08-06 07:30  鱼油YOU  阅读(19)  评论(0)    收藏  举报