功法摘要(今日收获)
领悟了循环心法(while、do...while、for、foreach)
掌握了数组的凝聚之法(索引数组、关联数组)
学会了“聚气成阵”之术——批量处理数据
初窥数组遍历之道——foreach的精髓
道友,昨日你已炼精化气,今日我们将“聚气成阵”!
昨日你已掌握运算符与流程控制,今日你将学习如何通过循环语句批量处理数据,并通过数组将多个数据凝聚成阵——这是PHP编程中的核心技能,如同修真者凝聚灵气成阵,可一次性处理大量事务。
【循环心法:聚气成阵之术】
在PHP大世界中,循环语句是“聚气成阵”的关键,如同阵法般重复执行某段代码,直到满足特定条件。
1. while 循环
特性:当条件为真时,重复执行代码块。
// 基础语法
while (条件) {
// 条件为真时执行
// 记得更新条件,否则会无限循环!
}
实战示例:倒计时修炼
$energy = 10;
echo "开始修炼倒计时:\n";
while ($energy > 0) {
echo "剩余灵力:$energy\n";
$energy--; // 每次循环减少1点灵力
}
echo "修炼完成!\n";
2. do...while 循环
特性:先执行一次代码块,再判断条件。即使条件为假,也会至少执行一次。
// 基础语法
do {
// 先执行一次
} while (条件);
实战示例:至少执行一次的修炼
$attempt = 0;
do {
$attempt++;
echo "第 $attempt 次尝试凝聚灵气...\n";
// 模拟凝聚失败
} while ($attempt < 3 && !mt_rand(0, 1)); // 50%成功率
echo "凝聚完成!共尝试 $attempt 次。\n";
3. for 循环
特性:已知循环次数时使用,包含初始化、条件、增量三个部分。
// 基础语法
for (初始化; 条件; 增量) {
// 条件为真时执行
}
实战示例:五行阵法演练
$elements = ["金", "木", "水", "火", "土"];
for ($i = 0; $i < count($elements); $i++) {
echo "第" . ($i + 1) . "重阵眼:{$elements[$i]}元素\n";
}
4. foreach 循环(数组专用)
特性:专门用于遍历数组,语法简洁,是处理数组的首选。
// 基础语法(遍历值)
foreach ($array as $value) {
// 处理每个值
}
// 基础语法(遍历键值对)
foreach ($array as $key => $value) {
// 处理每个键值对
}
实战示例:五行属性遍历
$elementAttributes = [
"金" => "攻击力+10",
"木" => "生命值+10",
"水" => "防御力+10",
"火" => "暴击率+10%",
"土" => "抗性+10"
];
echo "五行属性阵法:\n";
foreach ($elementAttributes as $element => $attribute) {
echo "$element 元素:$attribute\n";
}
【数组凝聚:数据集合之术】
数组是PHP中最强大的数据结构之一,可以存储多个值,并通过键名访问。
1. 索引数组
特性:键名是数字(从0开始自动分配)。
// 创建索引数组
$daoWeapons = ["青虹剑", "紫电枪", "玄铁刀"];
// 访问元素
echo "第一件武器:" . $daoWeapons[0] . "\n";
// 遍历数组
foreach ($daoWeapons as $weapon) {
echo "武器:$weapon\n";
}
2. 关联数组
特性:键名是自定义的字符串(类似字典)。
// 创建关联数组
$daoInfo = [
"name" => "清风道人",
"level" => "金丹期",
"mp" => 285.7,
"element" => "火"
];
// 访问元素
echo "道号:" . $daoInfo["name"] . "\n";
echo "境界:" . $daoInfo["level"] . "\n";
// 遍历数组
foreach ($daoInfo as $key => $value) {
echo "$key: $value\n";
}
3. 多维数组
特性:数组的元素也是数组,适合存储复杂数据。
// 创建多维数组(修真者列表)
$daoists = [
[
"name" => "清风道人",
"level" => "金丹期",
"element" => "火"
],
[
"name" => "明月仙子",
"level" => "元婴期",
"element" => "水"
],
[
"name" => "玄天真人",
"level" => "化神期",
"element" => "木"
]
];
// 遍历多维数组
foreach ($daoists as $daoist) {
echo "道号:{$daoist['name']},境界:{$daoist['level']}\n";
}
今日修炼:凝聚你的“阵法之力”
理论已毕,需以实践固之。请你在紫府中凝聚以下“心法”,构筑你的第一道“阵法神念”。
修炼任务
- 凝聚【while】灵根:使用while循环输出1到10的数字。
- 凝聚【do...while】灵根:使用do...while循环实现一个简单的猜数字游戏。
- 凝聚【for】灵根:使用for循环计算1到100的和。
- 凝聚【foreach】灵根:使用foreach遍历关联数组,输出修真者信息。
- 凝聚【索引数组】灵根:创建一个存储武器的索引数组,并遍历输出。
- 凝聚【关联数组】灵根:创建一个存储修真者信息的关联数组。
- 【筑基挑战】:创建一个多维数组存储修真者列表,并使用foreach遍历输出。
代码示例
<?php
// 于紫府内凝聚元气
// 1. while循环:输出1到10
echo "=== while循环 ===\n";
$i = 1;
while ($i <= 10) {
echo "数字:$i\n";
$i++;
}
// 2. do...while循环:猜数字游戏
echo "\n=== do...while循环 ===\n";
$target = 7;
$guess = 0;
$attempts = 0;
do {
$attempts++;
$guess = rand(1, 10);
echo "第$attempts次猜测:$guess\n";
} while ($guess != $target && $attempts < 5);
if ($guess == $target) {
echo "猜中了!目标数字是$target\n";
} else {
echo "未猜中,目标数字是$target\n";
}
// 3. for循环:计算1到100的和
echo "\n=== for循环 ===\n";
$sum = 0;
for ($i = 1; $i <= 100; $i++) {
$sum += $i;
}
echo "1到100的和:$sum\n";
// 4. foreach遍历关联数组
echo "\n=== foreach遍历关联数组 ===\n";
$daoInfo = [
"name" => "清风道人",
"level" => "金丹期",
"mp" => 285.7,
"element" => "火"
];
foreach ($daoInfo as $key => $value) {
echo "$key: $value\n";
}
// 5. 索引数组:武器列表
echo "\n=== 索引数组 ===\n";
$weapons = ["青虹剑", "紫电枪", "玄铁刀", "金箍棒"];
foreach ($weapons as $index => $weapon) {
echo "武器" . ($index + 1) . ":$weapon\n";
}
// 6. 多维数组:修真者列表
echo "\n=== 多维数组 ===\n";
$daoists = [
[
"name" => "清风道人",
"level" => "金丹期",
"element" => "火"
],
[
"name" => "明月仙子",
"level" => "元婴期",
"element" => "水"
],
[
"name" => "玄天真人",
"level" => "化神期",
"element" => "木"
]
];
foreach ($daoists as $daoist) {
echo "道号:{$daoist['name']},境界:{$daoist['level']},元素:{$daoist['element']}\n";
}
// 内视周天!
echo "\n========内视紫府========\n";
var_dump($sum, $weapons, $daoists);
?>
预告明天:函数与超全局变量
明日,我们将研修函数与超全局变量!此乃“神通广大”之关键,将赋予你的代码复用与交互的能力!例如:“定义一个可重复使用的法术”或“获取用户输入的数据”。你的代码将拥有“法术书”!
参考资料
- PHP官方文档:循环语句
- PHP官方文档:数组