PHP中用for循环实现笛卡尔坐标系:修复坐标轴显示异常问题
修复PHP笛卡尔坐标系坐标轴显示问题
我正在为课程作业制作笛卡尔坐标系,目前仅完成到如下阶段,恳请各位帮忙修复坐标轴的显示问题。
当前代码:
<?php $n=10; for($i=-10;$i<=$n;$i++){ for($j=-10;$j<=$n;$j++){ if($i==0 || $j==0){ echo " $i "; } else { echo " "; } } echo "\n"; } ?>
当前输出问题
所有坐标轴位置都显示行对应的$i值,导致水平方向的X轴数值完全错误,原点也没有正确区分,整体布局混乱。
期望效果
水平X轴显示对应列的$j数值,垂直Y轴显示对应行的$i数值,原点位置有清晰标识,整个坐标系对齐整齐,符合标准笛卡尔坐标系的视觉呈现。
修复后的代码
<?php $n = 10; for ($i = -10; $i <= $n; $i++) { for ($j = -10; $j <= $n; $j++) { if ($i == 0 && $j == 0) { // 原点用+标识,也可替换为" 0 " echo " + "; } elseif ($i == 0) { // X轴输出列坐标j,格式化占3位宽度保证对齐 printf("%3d", $j); } elseif ($j == 0) { // Y轴输出行坐标i,格式化占3位宽度保证对齐 printf("%3d", $i); } else { echo " "; } } echo "\n"; } ?>
修改说明
- 拆分了坐标轴的三种场景:原点、X轴、Y轴,不再统一输出$i值
- 使用
printf("%3d", ...)格式化输出,确保每个位置占用3个字符宽度,让坐标系整体对齐更规整 - 原点单独用"+"标记,更直观区分坐标系中心(若需要显示0,替换为
echo " 0 ";即可)
内容的提问来源于stack exchange,提问作者Fero
相关产品推荐
相关产品推荐

