我有以下代码来反转一个数字:
<?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(上面的循环)的值从0更改为8?你能给我一张粗略的草图,它存储第一次返回的金额吗?我的问题是,在顶部初始化为0的$ sum的值是保持相同还是改变,因为每当我们在顶部回显$ sum时,它总是显示0.所以我们不能直接看它是否在改变?
编辑: 可以说吗?(见评论):
<?php
function reverse_num($num){
$sum = 0; //Logically this becomes $sum = 8; Is it oaky to say?
while(floor($num)){
$newnum = $num%10;
$sum = $sum * 10 + $newnum;
$num = $num/10;
}
return $sum;
}
echo reverse_num(98);
?>
答案 0 :(得分:2)
$sum
IS 的值在循环中发生变化。在循环之前,它被初始化为0($sum = 0
)。循环运行时,$sum
的值在循环的每次迭代中都会更改为$sum * 10 + $newnum
的值。
循环第一次返回8(通过你的代码):
$newnum
= 8(98%10 = 8)$sum
= 8((0 * 10)+ 8 = 8)答案 1 :(得分:0)
您似乎在询问何时/如何更改总和的价值:请参阅我对您的代码的评论:
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);
您可以直接使用strrev
功能反转该号码,如下所示:
strrev(918); // will return 819