You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用PHP循环生成分子1-345、分母1-9的分数序列?

解决PHP生成分数序列的问题

首先看你原来的代码,问题出在这几个地方:

  • 内层循环结束后,$i1的值会变成$end1 + 1(也就是10),所以你外层循环里拼接的$i.'/'.$i1其实都是$i/10,完全没用到内层循环里的分母1-9
  • 你把内层循环的$i1存到了$tweedearray里,但这个变量根本没在后续使用,等于白存了

要实现你要的效果,应该在外层循环遍历分子(1到345),内层循环遍历分母(1到9),每次在内层循环里把当前的分数拼接到结果里,而不是等内层循环结束再拼。

下面是修正后的代码:

$startNum = 1;   // 起始分子
$endNum = 345;    // 结束分子
$startDen = 1;   // 起始分母
$endDen = 9;     // 结束分母

$result = '';

// 外层循环:遍历分子
for ($num = $startNum; $num <= $endNum; $num++) {
    // 内层循环:遍历分母
    for ($den = $startDen; $den <= $endDen; $den++) {
        // 把当前分数拼到结果里,用空格分隔
        $result .= "$num/$den ";
    }
}

// 输出结果,最后可以去掉多余的空格
echo rtrim($result);

如果希望每个分子对应的分数单独占一行,可以稍微修改内层循环的拼接逻辑:

$startNum = 1;
$endNum = 345;
$startDen = 1;
$endDen = 9;

$result = '';

for ($num = $startNum; $num <= $endNum; $num++) {
    $line = '';
    for ($den = $startDen; $den <= $endDen; $den++) {
        $line .= "$num/$den ";
    }
    // 每行结尾去掉空格,加换行符
    $result .= rtrim($line) . '<br>';
}

echo $result;

这样就能得到你想要的:1/1 1/2 ... 1/9 2/1 2/2 ... 2/9 ... 345/1 ... 345/9 的序列啦。

内容的提问来源于stack exchange,提问作者twan

火山引擎 最新活动