【问题标题】:echo and return print different values回显并返回打印不同的值
【发布时间】:2019-06-09 05:20:53
【问题描述】:

我正在使用 php bcmath 扩展进行阶乘计算,我发现 echoreturn 导致不同的结果

此代码生成错误结果

<?php
    $a = 25;
    function test($a){
        if($a>1){
        $sum   =   bcmul($a, test($a-1)) ;
            echo $sum;
        } 
       if($a == 1) { return $a ;}
    }
    test($a);   // Output  200000000000000000000000
    ?>  

下面的代码生成正确的结果

<?php 
$a = 25;
function test($a){
    if($a>1){
    $sum   =   bcmul($a, test($a-1)) ;
        return $sum;
    } 
   if($a == 1) { return $a ;}
}
echo test($a);

?>

这个问题生成200000000000000000000000 结果与echo $sum 并返回错误结果,但如果我echo test()return $sum 则倾向于正确结果15511210043330985984000000。为什么

【问题讨论】:

  • return 结束函数,echo 没有?
  • 其实这不是echo和return的区别,只是因为你在函数中使用了递归,所以你必须返回中间结果

标签: php int return echo bcmath


【解决方案1】:

请使用带有returnecho test() 的后一个版本,因为您使用的是recursion(请参阅带有test($a-1) 的行)。只有在使用 return 语句 将中间结果传递回堆栈中的下一个更高级别时,递归才能正常工作。

另一方面,echo 不会返回要进一步计算的中间结果 - 它只是将它们打印出来。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 2014-10-02
    • 2020-11-06
    • 1970-01-01
    • 2021-11-07
    • 2020-01-23
    • 2014-02-12
    相关资源
    最近更新 更多