PHP中的数字反转未显示正确的输出

时间:2012-05-17 11:28:42

标签: php

我已经制作了一个程序来反转这个数字,但每次0都附加到结果上。

$num = 675;
$rev = 0;

while($num > 0) {
$temp = $num % 10;
$rev = ($rev *  10) + $temp;
$num = (int) $num / 10;
}

echo $rev;   //result is 5760

10 个答案:

答案 0 :(得分:8)

你的问题就在这一行:

$num = (int) $num / 10;

与:

相同
$num = ((int) $num) / 10;

因此它实际上没有投射结果。使用额外的括号:

$num = (int) ($num / 10);

答案 1 :(得分:6)

这是您完整的代码。

<?php
$n = 3456;
$reverse = 0;
while ($n > 0)
{
  $reverse = $reverse * 10;
  $reverse = $reverse + $n%10;
  $n = (int)($n/10);
}
echo $reverse;
?>

输出为6543

答案 2 :(得分:3)

在php中,你可以$rev = (int)strrev($num);

答案 3 :(得分:1)

你可以通过这个目标实现这个......

$num = 675;
$num_array = str_split($num);
$final_num_array = array_reverse($num_array);
$rev_num = implode("",$final_num_array);

答案 4 :(得分:1)

你可以尝试这样的事情:

<?php
    $num = 675;
    $strNum = (string) $num;
    $revStrNum = strrev($strNum);
    $revNum = (int) $revStrNum;
    echo $revNum; //Output 576 when I tried it
?>

注意,我使用了字符串函数strrev()

答案 5 :(得分:1)

如何使用strrev

$>cat r.php
<?php
$num=675;

$rev= (int) strrev("{$num}");

echo "{$num} : {$rev}".PHP_EOL;
?>

$>php r.rev
675 : 576

答案 6 :(得分:1)

这100%有用: -

 $mac = 123;
 $step1 = strrev((string)$mac);
 $step2 = (int)$step1;

 echo $mac." and ".$step2*2;//checking

答案 7 :(得分:0)

这是我在网上找到的数字反转器:

<?php 
$num=6541020; 
$revnum=0; 
do{ 
    $revnum=($revnum *10)+($num % 10); 
    $num=(int)($num / 10 ); 
}while($num>0); 
echo $revnum; 
?>

来源:http://www.weberdev.com/get_example.php3?ExampleID=4879

答案 8 :(得分:0)

$ num = 675;     $ rev = 0;

while($num > 1) { //do $num value lent-1
$temp = intval($num) % 10;
$rev = intval($rev) *  10 + $temp;
$num =  intval($num)/ 10;
}

echo $rev; 

答案 9 :(得分:0)

这么简单,试试这个:

$num = 4321;
$rev = 0;

while($num > 1) {
    $temp = $num % 10;  
    $num = (int) $num / 10;
    echo $temp;
}

输出:

1234