← PHP中的素数判定与生成:从基础逻辑到实战应用 PHP中阶乘计算的两种实现方式:循环与递归 →

PHP中乘法表的实现:从循环结构到输出格式化

原创 2026-05-21 PHP 已有人查阅

什么是乘法表(数值乘法表)

乘法表指的是将一个固定的数分别与1到10(或其他范围)的整数相乘,按顺序输出每个乘积结果。这是学习循环结构时一个基础且实用的练习场景。

比如说,用户需要知道7的倍数有哪些,程序通过循环依次计算7×1、7×2……直到7×10,把结果逐行打印出来。

核心实现逻辑

编写一个数值乘法表需要三个基本要素:

  1. 被乘数:固定的那个数(比如7、9、12)

  2. 循环变量:从1开始递增到指定上限(通常到10结束)

  3. 乘法运算:循环变量 × 被乘数

个人经验:很多新手会把被乘数和乘数的位置搞反,但实际上乘法交换律决定了结果一样,代码可读性才是应该关注的。我习惯把固定值放右边,循环变量放左边,这样读起来“1×7、2×7……”更符合平时念乘法表的语序。

示例一:使用define常量定义被乘数

下面这份代码演示了如何用define()定义一个常量作为被乘数,然后用for循环输出结果。

<?php    
define('BASE_NUM', 7);   // 定义常量,存储被乘数
for ($i = 1; $i <= 10; $i++) {   
    echo $i * BASE_NUM;   
    echo '<br>';     
}  
?>

输出结果

7
14
21
28
35
42
49
56
63
70

关于常量的使用:用define()定义常量而不是用普通变量,是考虑到这个数值在整个脚本执行过程中不应该被意外修改。如果后续维护代码时有人不小心改了BASE_NUM的值,程序就会报错而不是静默地产生错误结果。这种做法在多人协作或长期维护的项目中比较实用。

示例二:通过表单动态生成任意数的乘法表

代码号学习编程的典型场景——用户输入什么数字,程序就输出这个数字的乘法表。

<form method="post">  
    请输入要生成乘法表的数字:<input type="text" name="number"><br><br>  
    <input type="submit" name="submit" value="生成表格">  
</form>  
<?php  
if ($_POST) {  
    $num = $_POST['number'];  
    
    // 输入校验:必须是有效的数字
    if (!is_numeric($num) || $num <= 0) {  
        echo '请输入大于0的有效数字';  
    } else {  
        echo "<h3>数字 {$num} 的乘法表:</h3>";  
        for ($i = 1; $i <= 10; $i++) {  
            $result = $i * $num;  
            echo "{$i} × {$num} = {$result}<br>";  
        }  
    }  
}  
?>

本节课程知识要点

知识点 说明
define() 常量定义 值在脚本中不可变,适合存储固定配置
for 循环结构 for(初始值; 条件; 步进) 三部分缺一不可
循环变量作用域 $i 仅在循环内部有意义,外部访问会报错
输入校验的必要性 用户可能输入负数、字母或空值,必须提前过滤
字符串拼接与换行 <br> 标签用于浏览器换行,\n 用于源码换行

输出格式的几种写法对比

在开发中,乘法表的输出方式可以有不同选择,每种有其适用场景。

写法一:纯文本拼接

echo $i . " × " . $num . " = " . ($i * $num) . "<br>";

写法二:双引号变量解析(个人比较常用,更简洁)

echo "$i × $num = " . ($i * $num) . "<br>";

写法三:使用printf格式化

printf("%d × %d = %d<br>", $i, $num, $i * $num);

为什么很多时候不用纯文本拼接?因为当变量较多时代码会变得冗长,可读性下降。双引号解析虽然简洁,但需要注意数组或对象属性可能需要花括号包裹。我自己在项目中倾向于用双引号搭配点连接符混合使用。

进阶:输出带HTML表格的乘法表

有时候需要把结果放在表格里,让界面更规整。下面是一个例子:

<?php
$number = 9;
echo '<table border="1" cellpadding="8">';
for ($i = 1; $i <= 10; $i++) {
    echo '<tr>';
    echo "<td>{$i} × {$number}</td>";
    echo "<td align='right'>" . ($i * $number) . "</td>";
    echo '</tr>';
}
echo '</table>';
?>

常见问题与排查思路

问题1:输出结果全部挤在一行

  • 原因:忘记写<br>或换行符

  • 解决:每个结果后面加上换行标签

问题2:循环只执行了一次

  • 原因:循环条件写成了$i<=10但循环内修改了$i的值

  • 解决:不要在循环体内手动改变循环变量

问题3:表单提交后页面没反应

  • 原因:没有判断$_POST是否有数据

  • 解决:用if($_POST)isset($_POST['submit'])包裹处理逻辑

个人建议

初学阶段建议先用define()写固定值的乘法表,把循环逻辑跑通。然后再改成表单动态版本,加深对超全局变量$_POST的理解。之后尝试输出不同范围(比如1到12)的乘法表,这样循环控制能力会更扎实。

另外写代码时养成加注释的习惯,哪怕是简单练习——三个月后回头看,注释能帮你快速回想起当时的思路。

← PHP中的素数判定与生成:从基础逻辑到实战应用 PHP中阶乘计算的两种实现方式:循环与递归 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号