Php 我在获取程序逻辑时遇到了一些问题
我有以下代码来反转一个数字:Php 我在获取程序逻辑时遇到了一些问题,php,Php,我有以下代码来反转一个数字: <?php function reverse_num($num){ $sum = 0; while(floor($num)){ $newnum = $num%10; $sum = $sum * 10 + $newnum; $num = $num/10; } return $sum; } echo re
<?php
function reverse_num($num){
$sum = 0;
while(floor($num)){
$newnum = $num%10;
$sum = $sum * 10 + $newnum;
$num = $num/10;
}
return $sum;
}
echo reverse_num(98);
?>
在这段代码中,当循环第一次初始化时,它返回8作为$sum的值。但我想知道它到底在哪里存储值?是否将$sum(在while循环上方)的值从0更改为8?你能给我一个大概的草图,它把第一次归还的钱存放在哪里吗?我的问题是,顶部初始化为0的$sum的值是保持不变,还是会发生变化,因为每当我们在顶部回显$sum时,它总是显示0。所以我们不能直接看到它是否在改变
编辑:
可以这样说吗?(见评论):
循环中,
$sum
的值正在变化。在循环之前,它被初始化为0($sum=0
)。循环运行时,$sum
的值在循环的每次迭代中更改为$sum*10+$newnum
的值
循环第一次返回8(遍历代码):
$newnum
=8(98%10=8)$sum
=8((0*10)+8=8)您似乎在问sum的值何时/如何变化:请参阅下面我对您的代码的评论:
function reverse_num($num){
$sum = 0;
while(floor($num)){
//ON 1st iteration, sum = 0 here
$newnum = $num%10;
$sum = $sum * 10 + $newnum; //Once you do this, on first iteration sum changes to 8, because here $sum = 0 * 10 + 8;
$num = $num/10;
}
return $sum;
}
echo reverse_num(98);
您可以直接使用strev
功能反转数字,如下所示:
strrev(918); // will return 819
我不知道你在问什么;当为变量指定一个不同于其现有值的新值时,该变量会发生变化。使用调试器并单步执行函数,以查看哪个变量在任何时候都具有什么值。或者写出来…在调试器中逐步跟随
$sum
的值,或者在循环的每次迭代中回显该值…找到适合您的答案后,单击该答案旁边的勾号接受该答案。这有助于解决您的问题的其他人了解哪种解决方案有效you@AdiC,我们可以这样说吗?请看问题的编辑部分。非常感谢。我特别想知道具体的部分。是的,值在变化,但我的问题是$sum=0;(上面的while循环)变成$sum=8@Manish在循环的第二行($sum=$sum*10+$newnum
),您正在将$sum
的值从0更改为$sum*10+$newnum
(8为(0x10)+8为8)。这就是为什么$sum
在循环的第一次迭代后变为8。谢谢,我明白你的意思了。实际上,我想了解程序的内部逻辑。@Manish是的,在这种情况下,可以说,$sum
在第一次迭代后变为8。
strrev(918); // will return 819