2

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

$num = 675;
$rev = 0;

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

echo $rev;   //result is 5760
4

10 回答 10

8

你的问题是这一行:

$num = (int) $num / 10;

这与以下内容相同:

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

所以它实际上并没有投射结果。使用额外的括号:

$num = (int) ($num / 10);
于 2012-05-17T11:34:35.690 回答
6

这是你完整的代码。

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

输出将是 6543

于 2013-01-16T04:33:12.907 回答
3

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

于 2012-05-17T11:34:59.257 回答
1

如何使用strrev

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

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

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

$>php r.rev
675 : 576
于 2015-03-16T13:24:27.623 回答
1

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

$num = 675;
$num_array = str_split($num);
$final_num_array = array_reverse($num_array);
$rev_num = implode("",$final_num_array);
于 2012-05-17T11:33:10.603 回答
1

你可以尝试这样的事情:

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

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

于 2012-05-17T11:34:31.573 回答
1

这 100% 有效:-

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

 echo $mac." and ".$step2*2;//checking
于 2017-07-22T16:59:24.900 回答
0

很简单,试试这个:

$num = 4321;
$rev = 0;

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

输出:

1234
于 2015-02-08T06:57:20.017 回答
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; 
于 2013-07-05T08:39:20.863 回答
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

于 2012-05-17T11:38:03.643 回答