PHP循环并从循环中删除字符

PHP循环并从循环中删除字符,php,loops,echo,factorial,Php,Loops,Echo,Factorial,我正在为大学做一个因子循环测试,但我想不出这一点。我想做阶乘计算并重复它,但也要删除一点计算。所以我想让它显示: 5的阶乘为120 5x4x3x2x1=120 但我得到的是: 5的阶乘为120 5x4x3x2x1x=120 这是我到目前为止在php括号内的代码 $i = $num; do { echo strrev(" x $i "); $i--; } while($i > 0); echo (" = $factorial&qu

我正在为大学做一个因子循环测试,但我想不出这一点。我想做阶乘计算并重复它,但也要删除一点计算。
所以我想让它显示:
5的阶乘为120
5x4x3x2x1=120

但我得到的是:
5的阶乘为120
5x4x3x2x1x=120

这是我到目前为止在php括号内的代码

$i = $num;
do
  {
      echo strrev(" x $i ");
    $i--;
  } while($i > 0);
  echo (" = $factorial");

这将实现以下目的:

$i = $num;
$factorial = 1;
$sep = "";
do {
    echo "$sep $i";
    $factorial = $factorial * $i;
    $i--;
    $sep = " x";
  } while($i > 0);
  echo ("  = $factorial");

这将实现以下目的:

$i = $num;
$factorial = 1;
$sep = "";
do {
    echo "$sep $i";
    $factorial = $factorial * $i;
    $i--;
    $sep = " x";
  } while($i > 0);
  echo ("  = $factorial");
您可以尝试以下方法:

$i = $num;
$factorial = 1;
while($i > 0);
  {
       echo $i . ' x ';
       //if($i>1) echo strrev(" x $i "); strrev would produce undesired output when $num is 10 or greater as pointed out by @wire
      else echo $i;
      $factorial = $factorial * $i;
      $i--;
  }
  echo (" = $factorial");
或使用
三元运算符
如:

$i = $num;
$factorial = 1;
while($i > 0){
    echo( $i>1 ? $i . ' x '  : $i);
    $factorial = $factorial * $i;
    $i--;
}
echo (" = $factorial");
根据@mickmackusa的输入,我修改了我的答案以达到目的。

您可以尝试以下方法:

$i = $num;
$factorial = 1;
while($i > 0);
  {
       echo $i . ' x ';
       //if($i>1) echo strrev(" x $i "); strrev would produce undesired output when $num is 10 or greater as pointed out by @wire
      else echo $i;
      $factorial = $factorial * $i;
      $i--;
  }
  echo (" = $factorial");
或使用
三元运算符
如:

$i = $num;
$factorial = 1;
while($i > 0){
    echo( $i>1 ? $i . ' x '  : $i);
    $factorial = $factorial * $i;
    $i--;
}
echo (" = $factorial");

根据@mickmackusa的输入,我修改了我的答案以达到目的。

您可以将
while()
条件增加一个,并在循环()之后添加另一个
echo
,但我不推荐这样做

do-while()。您应该使用预测试循环。我还使用组合的“乘法赋值”运算符来增加最终乘积

代码:()

在专业应用程序中,我可能会使用函数式编程,但您可能只是作为一个学术练习。无论如何,这种风格有一种表现方式:

代码:()


您可以将
while()
条件增加一个,并在循环()之后添加另一个
echo
,但我不建议这样做

do-while()。您应该使用预测试循环。我还使用组合的“乘法赋值”运算符来增加最终乘积

代码:()

在专业应用程序中,我可能会使用函数式编程,但您可能只是作为一个学术练习。无论如何,这种风格有一种表现方式:

代码:()


它需要是一个文本循环,还是可以使用函数式编程?你为什么要费心处理strrev()
?阶乘在哪里声明?或者你是在循环中构建它。它需要是一个文本循环,还是可以使用函数式编程?你为什么要费心处理strrev()
?阶乘在哪里声明?或者你是在循环中构建的。“试试这个”答案在Stackoverflow上的价值很低,因为它们对未来数千名研究人员的教育/授权作用微乎其微。你为什么支持使用
strev()
?进行最少的编辑@mickmackusa
strev()
如果“$i>=10”感谢@Gowire指出这一点,那么它将产生错误的结果。“试试这个”答案在Stackoverflow上的价值很低,因为它们对未来数千名研究人员的教育/授权作用微乎其微。你为什么支持使用
strev()
?进行最少的编辑@mickmackusa
strev()
如果“$i>=10”感谢@Gowire指出这一点,那么将产生错误的结果。“这就行了”答案在Stackoverflow上的价值很低,因为它们对未来数千名研究人员的教育/授权作用微乎其微。“这就行了”答案在Stackoverflow上的价值很低,因为它们对未来数千名研究人员的教育/授权作用甚微。