<?phpecho “=== PHP for循环嵌套演示 ===\n\n”;// 1. 基本的二维数组遍历echo “1. 二维数组遍历:\n”;$matrix = [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12]];var_dump($matrix);echo “矩阵内容:\n”;for ($i = 0; $i < count($matrix); $i++) { //行3for ($j = 0; $j < count($matrix[$i]); $j++) { //列4echo sprintf(“%3d “, $matrix[$i][$j]);}echo “\n”;}echo “\n”;//=========================================// 2. 乘法表echo “2. 九九乘法表:\n”;for ($i = 1; $i <= 9; $i++) { //行9for ($j = 1; $j <= $i; $j++) { //列9echo “$j × $i = ” . ($i * $j) . “\t”;}echo “\n”;}echo “\n”;//=========================================// 3. 图案打印 – 星号三角形echo “3. 星号三角形图案:\n”;$rows = 5;for ($i = 1; $i <= $rows; $i++) {// 打印空格for ($j = 1; $j <= $rows – $i; $j++) {echo ” “;}// 打印星号for ($k = 1; $k <= (2 * $i – 1); $k++) {echo “*”;}echo “\n”;}echo “\n”;//=========================================// 4. 数字金字塔echo “4. 数字金字塔:\n”;for ($i = 1; $i <= 5; $i++) {// 打印前导空格for ($j = 1; $j <= 5 – $i; $j++) {echo ” “;}// 打印递增数字for ($k = 1; $k <= $i; $k++) {echo $k;}// 打印递减数字for ($l = $i – 1; $l >= 1; $l–) {echo $l;}echo “\n”;}echo “\n”;//=========================================// 5. 矩阵操作 – 矩阵转置echo “5. 矩阵转置:\n”;$originalMatrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]];echo “原始矩阵:\n”;for ($i = 0; $i < count($originalMatrix); $i++) {for ($j = 0; $j < count($originalMatrix[$i]); $j++) {echo sprintf(“%3d “, $originalMatrix[$i][$j]);}echo “\n”;}echo “转置矩阵:\n”;for ($i = 0; $i < count($originalMatrix[0]); $i++) { // 列数for ($j = 0; $j < count($originalMatrix); $j++) { // 行数echo sprintf(“%3d “, $originalMatrix[$j][$i]);}echo “\n”;}echo “\n”;//=========================================// 6. 三维数组处理echo “6. 三维数组处理:\n”;$cube = [];for ($i = 0; $i < 3; $i++) {for ($j = 0; $j < 3; $j++) {for ($k = 0; $k < 3; $k++) {$cube[$i][$j][$k] = $i * 100 + $j * 10 + $k;}}}echo “三维数组内容:\n”;for ($i = 0; $i < 3; $i++) {echo “层 $i:\n”;for ($j = 0; $j < 3; $j++) {echo ” 行 $j: “;for ($k = 0; $k < 3; $k++) {echo sprintf(“%3d “, $cube[$i][$j][$k]);}echo “\n”;}echo “\n”;}//=========================================// 7. 矩阵相乘echo “7. 矩阵相乘演示:\n”;$matrixA = [[1, 2, 3],[4, 5, 6]];$matrixB = [[7, 8],[9, 10],[11, 12]];echo “矩阵A (2×3):\n”;for ($i = 0; $i < count($matrixA); $i++) {for ($j = 0; $j < count($matrixA[$i]); $j++) {echo sprintf(“%3d “, $matrixA[$i][$j]);}echo “\n”;}echo “矩阵B (3×2):\n”;for ($i = 0; $i < count($matrixB); $i++) {for ($j = 0; $j < count($matrixB[$i]); $j++) {echo sprintf(“%3d “, $matrixB[$i][$j]);}echo “\n”;}// 矩阵相乘结果 (2×2)$result = [];for ($i = 0; $i < count($matrixA); $i++) {for ($j = 0; $j < count($matrixB[0]); $j++) {$result[$i][$j] = 0;for ($k = 0; $k < count($matrixB); $k++) {$result[$i][$j] += $matrixA[$i][$k] * $matrixB[$k][$j];}}}echo “矩阵A × 矩阵B 结果 (2×2):\n”;for ($i = 0; $i < count($result); $i++) {for ($j = 0; $j < count($result[$i]); $j++) {echo sprintf(“%4d “, $result[$i][$j]);}echo “\n”;}echo “\n”;//=========================================// 8. 性能对比:不同循环结构echo “8. 循环性能对比演示:\n”;// 测试数据$size = 100;$testMatrix = [];// 初始化测试矩阵for ($i = 0; $i < $size; $i++) {for ($j = 0; $j < $size; $j++) {$testMatrix[$i][$j] = $i * $size + $j;}}// 测试for循环性能$start = microtime(true);$sum = 0;for ($i = 0; $i < $size; $i++) {for ($j = 0; $j < $size; $j++) {$sum += $testMatrix[$i][$j];}}$end = microtime(true);echo “For循环计算矩阵元素和: $sum\n”;echo “耗时: ” . (($end – $start) * 1000) . ” 毫秒\n\n”;//=========================================// 9. 复杂数学计算 – 生成帕斯卡三角形echo “9. 帕斯卡三角形 (杨辉三角):\n”;$n = 8;$pascal = [];// 生成帕斯卡三角形for ($i = 0; $i < $n; $i++) {for ($j = 0; $j <= $i; $j++) {if ($j == 0 || $j == $i) {$pascal[$i][$j] = 1;} else {$pascal[$i][$j] = $pascal[$i-1][$j-1] + $pascal[$i-1][$j];}}}// 打印帕斯卡三角形for ($i = 0; $i < $n; $i++) {// 打印前导空格for ($k = 0; $k < $n – $i – 1; $k++) {echo ” “;}// 打印数字for ($j = 0; $j <= $i; $j++) {echo sprintf(“%4d”, $pascal[$i][$j]);}echo “\n”;}echo “\n”;//=========================================// 10. 实际应用:图的邻接矩阵初始化(与您之前的代码相关)echo “10. 图的邻接矩阵初始化:\n”;$vertices = 5;$adjMatrix = [];// 使用嵌套for循环初始化邻接矩阵for ($i = 0; $i < $vertices; $i++) {for ($j = 0; $j < $vertices; $j++) {$adjMatrix[$i][$j] = 0; // 初始化为0,表示无连接}}echo “初始化的 {$vertices}×{$vertices} 邻接矩阵:\n”;for ($i = 0; $i < $vertices; $i++) {for ($j = 0; $j < $vertices; $j++) {echo sprintf(“%2d “, $adjMatrix[$i][$j]);}echo “\n”;}// 添加一些边$edges = [[0,1], [1,2], [2,3], [3,4], [0,4]];for ($i = 0; $i < count($edges); $i++) {$from = $edges[$i][0];$to = $edges[$i][1];$adjMatrix[$from][$to] = 1;$adjMatrix[$to][$from] = 1; // 无向图}echo “\n添加边后的邻接矩阵:\n”;for ($i = 0; $i < $vertices; $i++) {for ($j = 0; $j < $vertices; $j++) {echo sprintf(“%2d “, $adjMatrix[$i][$j]);}echo “\n”;}?>