php - 在 while 循环中使用 array_sum()

标签 php while-loop

我正在学习 PHP。无法理解为什么这段代码不起作用。

特别是:为什么 array_sum($x) (1596) 的结果大于 $cap?也许我不理解 while 循环的本质,但在我看来(查看 print_r($x)),循环应该在实际执行之前删除一个步骤。

<?php

function fibonacci_sum($cap = 1000){

list( $cur, $nxt, $seq ) = array( 0, 1, array() );

while ( array_sum($seq) < $cap ) {

 $seq[] = $cur;    
 $add = $cur + $nxt;  
 $cur = $nxt;   
 $nxt = $add;  
 }

return $seq;

}

$x = fibonacci_sum();
echo array_sum($x);

?>

任何见解都值得赞赏。

最好, 哑光

最佳答案

这样看:如果 array_sum($x) 小于 $cap,那么 while 循环体将再次执行。因此,当 while 循环停止执行时,根据定义,while 顶部的条件将为 false。 (*) 我想你想说的是:

while ( array_sum($seq) + $cur < $cap ) {

这将在您超过 $cap 之前停止,这正是您想要做的。

(*) 是的,是的,关于 break 语句效果的免责声明。

关于php - 在 while 循环中使用 array_sum(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2739101/

相关文章:

php - php中的 session 和cookie有什么区别?

c - C-如何检查数字出现在数字中的次数

python - 为什么 else 条件在 Python If-else 语句上不起作用?

java - while 循环忽略我的参数。基本 10 以上 0 以上

javascript - 如果禁用了javascript,如何禁用网站

php - 错误对象和数组

python - 循环并附加到列表

php - 查询中的 ORDER BY 不适用于循环

php - Proguard 和 Gson - 转换 arraylist 内的变量名称

php - cakephp - 在 webroot 中创建新目录