You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP实现星形三角形与数字拆分输出的技术求助

问题1:PHP实现星形三角形的正确方案

你的代码当前逻辑是输出倒星形三角形(首行10个星号,逐行递减1个),若运行异常可能是换行符适配问题;如果目标是正三角形(首行1个星号,逐行递增),则需要调整循环逻辑。

倒星形三角形(兼容Web/命令行环境)

原代码逻辑本身无错误,优化换行适配后可正常运行:

<?php
$star = 10;
for ($a = 1; $a <= $star; $a++) {
    // 输出当前行星号
    for ($c = $star; $c >= $a; $c--) {
        echo "*";
    }
    // 根据运行环境输出换行符
    echo PHP_SAPI === 'cli' ? PHP_EOL : '<br>';
}
?>

正星形三角形(逐行递增)

如果需要首行1个星号、逐行增加的正三角,调整内层循环判断条件:

<?php
$star = 10;
for ($a = 1; $a <= $star; $a++) {
    // 输出与当前行数等量的星号
    for ($c = 1; $c <= $a; $c++) {
        echo "*";
    }
    echo PHP_SAPI === 'cli' ? PHP_EOL : '<br>';
}
?>
问题2:PHP循环拆分数字为位权格式输出

将数字1225441拆分为每一位对应位权的格式,可通过两种方式实现:

方法1:字符串遍历法

将数字转为字符串后逐位处理,计算对应位权值:

<?php
$num = 1225441;
$strNum = (string)$num;
$length = strlen($strNum);

for ($i = 0; $i < $length; $i++) {
    $digit = $strNum[$i];
    // 计算当前位的位权:10的(总长度-1-i)次方
    $power = pow(10, $length - 1 - $i);
    echo $digit * $power . PHP_EOL;
}
?>

方法2:数学运算逐位提取

通过取余和除法操作逐位提取数字,结合位权计算输出:

<?php
$num = 1225441;
// 先计算数字的总位数
$temp = $num;
$length = 0;
while ($temp > 0) {
    $temp = (int)($temp / 10);
    $length++;
}

$divisor = pow(10, $length - 1);
while ($divisor >= 1) {
    $digit = (int)($num / $divisor);
    echo $digit * $divisor . PHP_EOL;
    $num = $num % $divisor;
    $divisor = (int)($divisor / 10);
}
?>

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 18:01:15