Menu
CoddyTech

使用嵌套循环遍历

本课属于 Coddy PHP 学习旅程的“逻辑与流程”单元。第 30 课,共 68 课。

处理二维数组时,你通常需要处理每一个元素,因此需要遍历每一行,再遍历该行中的每一列。这时嵌套循环就很有用了。你可以在一个循环中嵌套另一个循环,按顺序遍历整个网格结构。

外层循环遍历二维数组的每一行,而内层循环处理当前行中的每个元素。下面说明如何使用 foreach 循环:

<?php
$schedule = [
    ["Meeting", "Lunch", "Presentation"],
    ["Training", "Review", "Planning"],
    ["Workshop", "Break", "Demo"]
];

foreach ($schedule as $day) {
    foreach ($day as $appointment) {
        echo $appointment . "\n";
    }
}
?>

如果需要更好地控制索引,也可以使用传统的 for 循环。这种方法可以让你获取行和列的位置:

<?php
for ($row = 0; $row < count($schedule); $row++) {
    for ($col = 0; $col < count($schedule[$row]); $col++) {
        echo "Day " . ($row + 1) . ", Time " . ($col + 1) . ": " . $schedule[$row][$col] . "\n";
    }
}
?>

这种嵌套循环模式是完整处理二维数组的基础,无论你是在显示数据、执行计算,还是在整个网格结构中搜索特定值。

challenge icon

挑战

简单

你会收到一个输入:一个以 JSON 格式表示教室座位安排的二维数组。每个内部数组表示一排座位,每个元素包含一名学生的姓名,或表示空座位的空字符串。读取输入,将 JSON 字符串转换为二维数组,使用嵌套循环遍历整个座位安排,并按照以下格式打印每名学生的姓名及其位置:Row X, Seat Y: Name

跳过空座位(空字符串),只打印有人就坐的座位信息。行号和座位号都从 1 开始编号(不是从 0 开始)。

输入格式:一行内容,包含一个表示座位安排的 JSON 数组(示例:[["Alice","Bob",""],["","Charlie","Diana"],["Eve","","Frank"]])

预期输出:将每个有人就坐的座位单独打印在一行中,格式为 Row X, Seat Y: Name,其中 X 是行号,Y 是座位号(两者都从 1 开始)

亲手试试

<?php
// 读取 JSON 输入
$input = trim(fgets(STDIN));

// 将 JSON 字符串转换为二维数组
$seating = (array)json_decode($input, true);

// TODO: 在下方编写你的代码
// 使用嵌套循环遍历每一排和每个座位
// 记得跳过空座位,并从 1 开始给排和座位编号


?>
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: PHP 在线编译器