PHP 嵌套循环的深入使用
嵌套循环是指在一个循环内部包含另一个循环的结构。PHP 中嵌套循环可以处理多维数据、复杂模式生成等任务。以下是嵌套循环的各种使用场景和示例:
1. 基本二维数组遍历
php
$matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
// 外层循环控制行,内层循环控制列
for ($i = 0; $i < count($matrix); $i++) {
for ($j = 0; $j < count($matrix[$i]); $j++) {
echo $matrix[$i][$j] . " ";
echo "\n"; // 换行
2. 打印乘法表
php
for ($i = 1; $i <= 9; $i++) {
for ($j = 1; $j <= $i; $j++) {
echo "$j × $i = " . ($i * $j) . "\t";
echo "\n";
3. 多维关联数组处理
php
$students = [
"class1" => ["Alice" => 85, "Bob" => 76],
"class2" => ["Charlie" => 92, "David" => 88],
"class3" => ["Eve" => 95, "Frank" => 79]
foreach ($students as $class => $scores) {
echo "班级: $class\n";
for ($i = 0; $i < count($scores); $i++) {
$name = array_keys($scores)[$i];
$score = array_values($scores)[$i];
echo " $name: $score\n";
4. 生成复杂图案
php
// 金字塔图案
$rows = 5;
for ($i = 1; $i <= $rows; $i++) {
// 打印空格
for ($k = $rows; $k > $i; $k--) {
echo " ";
// 打印星号
for ($j = 1; $j <= (2 * $i - 1); $j++) {
echo "*";
echo "\n";
5. 矩阵运算
php
$a = [[1, 2], [3, 4]];
$b = [[5, 6], [7, 8]];
$result = [[0, 0], [0, 0]];
// 矩阵相乘
for ($i = 0; $i < 2; $i++) {
for ($j = 0; $j < 2; $j++) {
for ($k = 0; $k < 2; $k++) {
$result[$i][$j] += $a[$i][$k] * $b[$k][$j];
print_r($result);
6. 三重嵌套循环处理三维数据
php
// 三维数组遍历
$cube = [
[1, 2],
[3, 4]
],
[5, 6],
[7, 8]
for ($i = 0; $i < count($cube); $i++) {
for ($j = 0; $j < count($cube[$i]); $j++) {
for ($k = 0; $k < count($cube[$i][$j]); $k++) {
echo "cube[$i][$j][$k] = " . $cube[$i][$j][$k] . "\n";
7. 组合生成
php
// 生成所有可能的两位数组合
for ($i = 1; $i <= 3; $i++) {
for ($j = 1; $j <= 3; $j++) {
echo "$i$j ";
// 输出: 11 12 13 21 22 23 31 32 33
8. 嵌套循环中的控制结构
php
// 查找素数
for ($n = 2; $n <= 50; $n++) {
$isPrime = true;
for ($i = 2; $i * $i <= $n; $i++) {
if ($n % $i == 0) {
$isPrime = false;
break;
if ($isPrime) {
echo "$n 是素数\n";
9. 嵌套循环与条件判断结合
php
// 找出100-999之间的水仙花数
for ($i = 1; $i <= 9; $i++) {
for ($j = 0; $j <= 9; $j++) {
for ($k = 0; $k <= 9; $k++) {
$num = $i * 100 + $j * 10 + $k;
$sum = $i**3 + $j**3 + $k**3;
if ($num == $sum) {
echo "$num 是水仙花数\n";
10. 性能考虑与优化
php
// 不优化的嵌套循环
$start = microtime(true);
for ($i = 0; $i < 1000; $i++) {
for ($j = 0; $j < 1000; $j++) {
// 一些操作
echo "执行时间: " . (microtime(true) - $start) . " 秒\n";
// 优化的嵌套循环(减少内部循环的计算)
$start = microtime(true);
$limit = 1000;
for ($i = 0; $i < $limit; $i++) {
for ($j = 0; $j < $limit; $j++) {
// 一些操作
echo "优化后执行时间: " . (microtime(true) - $start) . " 秒\n";
嵌套循环的最佳实践
- 避免过深嵌套:通常超过3层嵌套会使代码难以理解和维护
- 合理命名变量:使用有意义的变量名如,而不是,
- $row
- $col
- $i
- $j
- 考虑性能:内层循环的执行次数是总复杂度的关键
- 适时使用 break/continue:可以提前终止或跳过某些迭代
- 考虑替代方案:对于某些问题,递归或专用函数可能更合适
嵌套循环是处理多维数据的强大工具,但需要谨慎使用以避免代码复杂度过高和性能问题。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.