php打印杨辉三角的核心是用二维数组+嵌套循环实现:每行首尾为1,中间元素等于上一行相邻两数之和;可优化为一维数组滚动更新节省空间,并通过居中对齐美化输出。

用PHP打印杨辉三角,核心在于理解其数学规律:每行首尾为1,中间每个数等于上一行相邻两数之和。实现方式灵活,可选循环、数组存储或递归,但推荐用二维数组+嵌套循环,清晰高效、易调试。
一、杨辉三角的生成逻辑
第n行有n个数(行号从1开始),第1行是[1],第2行是[1,1],第3行是[1,2,1]…… 关键规则:
- 每行第一个和最后一个元素恒为1
- 第i行第j列(i≥3,2≤j≤i−1)的值 = 第(i−1)行第(j−1)列 + 第(i−1)行第j列
- 可借助二维数组 $triangle[i] 存储第i+1行(PHP索引从0开始)
二、基础版:嵌套for循环实现
适合初学者,直观体现逐行构建过程:
示例代码:$n = 6; // 打印前6行
$triangle = [];
<p>for ($i = 0; $i </p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill5233" title="btpanel phpsite 宝塔面板PHP网站"><img
src="https://img.php.cn/upload/skill/000/000/081/179040786932301.jpg" alt="btpanel phpsite 宝塔面板PHP网站" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/skill5233" title="btpanel phpsite 宝塔面板PHP网站" class="overflowclass">btpanel phpsite 宝塔面板PHP网站</a>
<p class="overflowclass">宝塔面板 PHP 网站管理:站点创建、删除、启停、PHP 版本切换、域名管理、SSL证书管理、伪静态管理、数据库管理</p>
</div>
<a rel="nofollow" href="/xiazai/skill5233" title="btpanel phpsite 宝塔面板PHP网站" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div><p>// 输出(简单左对齐)
foreach ($triangle as $row) {
echo implode(' ', $row) . "\n";
}</p>
三、优化版:节省空间的一维数组
若只需输出不保存全部数据,可用单个数组滚动更新,减少内存占用:
- 从后往前更新当前行,避免覆盖上一行未使用的值
- 第i行需更新i−1个中间位置(索引1到i−1)
- 适合行数极大但仅需实时显示的场景
四、美化输出:居中对齐排版
纯文本中模拟三角形效果,需计算每行宽度并补空格:
- 假设数字最大位数为d(如n=10时最大数是252,取d=3),则每数占d位,间隔1空格
- 第i行总字符宽 ≈ (i × d) + (i − 1),居中需前置空格数 = 总宽_max − 当前行宽)/ 2
- 用 str_repeat(' ', $spaces) 拼接,再 echo;或 sprintf 格式化数字对齐
不复杂但容易忽略格式细节,动手写一遍就能掌握本质。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










