Я сделал программу для изменения числа, но каждый раз, когда 0
добавляется к результату.
$num = 675; $rev = 0; while($num > 0) { $temp = $num % 10; $rev = ($rev * 10) + $temp; $num = (int) $num / 10; } echo $rev; //result is 5760
Ваша проблема в этой строке:
$num = (int) $num / 10;
это то же самое, что:
$num = ((int) $num) / 10;
поэтому он фактически не приводит результат. Используйте дополнительные круглые скобки:
$num = (int) ($num / 10);
Вот полный код.
<?php $n = 3456; $reverse = 0; while ($n > 0) { $reverse = $reverse * 10; $reverse = $reverse + $n%10; $n = (int)($n/10); } echo $reverse; ?>
Выход будет 6543
В php вы можете сделать $rev = (int)strrev($num);
Вы можете достичь своей цели …
$num = 675; $num_array = str_split($num); $final_num_array = array_reverse($num_array); $rev_num = implode("",$final_num_array);
вы можете попробовать что-то вроде этого:
<?php $num = 675; $strNum = (string) $num; $revStrNum = strrev($strNum); $revNum = (int) $revStrNum; echo $revNum; //Output 576 when I tried it ?>
Заметьте, я использовал строковую функцию strrev ()
Как насчет использования strrev
:
$>cat r.php <?php $num=675; $rev= (int) strrev("{$num}"); echo "{$num} : {$rev}".PHP_EOL; ?> $>php r.rev 675 : 576
Вот реверс числа, который я нашел в Интернете:
<?php $num=6541020; $revnum=0; do{ $revnum=($revnum *10)+($num % 10); $num=(int)($num / 10 ); }while($num>0); echo $revnum; ?>
в<?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
$ 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;
Так просто, попробуйте следующее:
$num = 4321; $rev = 0; while($num > 1) { $temp = $num % 10; $num = (int) $num / 10; echo $temp; }
вывод:
1234
Это 100% работает: –
$mac = 123; $step1 = strrev((string)$mac); $step2 = (int)$step1; echo $mac." and ".$step2*2;//checking