• <day3>炼气化神——循环与数组的“聚气成阵”之术

    功法摘要(今日收获)

    ✅ 领悟了循环心法(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";
    }
    

    🎯 今日修炼:凝聚你的“阵法之力”

    理论已毕,需以实践固之。请你在紫府中凝聚以下“心法”,构筑你的第一道“阵法神念”。

    修炼任务

    1. 凝聚【while】灵根:使用while循环输出1到10的数字。
    2. 凝聚【do...while】灵根:使用do...while循环实现一个简单的猜数字游戏。
    3. 凝聚【for】灵根:使用for循环计算1到100的和。
    4. 凝聚【foreach】灵根:使用foreach遍历关联数组,输出修真者信息。
    5. 凝聚【索引数组】灵根:创建一个存储武器的索引数组,并遍历输出。
    6. 凝聚【关联数组】灵根:创建一个存储修真者信息的关联数组。
    7. 【筑基挑战】:创建一个多维数组存储修真者列表,并使用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官方文档:数组