Преобразование строки в число, возвращая его PHP - PullRequest
1 голос
/ 17 мая 2011

Мне нужно проверить, является ли число палиндромом, я начал думать, что, возможно, лучший способ сделать это - преобразовать число в строку и убедиться, что обратная строка одинакова.Когда я использую следующий код, я получил неправильный результат.

<?PHP 

function palindrome($number){
      $value = strval($number);
      $reverse_value = strrev($value);

      if($value == strrev($value)){
         echo " $number is a palindrome";
         echo  gettype($value);
         }else{
          echo "$number is not a palindrome";
          echo $value." ".strrev($value);
         }
}

$number = 90209;


palindrome($number);
?>

Может кто-нибудь объяснить мне разницу?

Ответы [ 3 ]

1 голос
/ 17 мая 2011

Кажется, у вас есть более глубокие проблемы, потому что я просто поместил этот код в ide:

https://ideone.com/yJEz1

Результат: 90209 is a palindromestring

И это успешно вывести значение. Возможно, вы захотите проверить свой php.ini на предмет измененных математических настроек, или просто снова запустить код в другом контексте, или устранить дублирование в коде, и это может дать вам правильный результат.

Вот тот же код, использующий приведение (string) для обеспечения типа строки (я никогда не использовал функцию strval (), лично я просто принудительно приводил тип). Это работает во всех трех тестовых случаях. https://ideone.com/4bI0O

0 голосов
/ 17 мая 2011

Вот оптимизированная версия, которая работает:

function is_palindrome( $value ) {
    $reverse_value = strrev( $value );

    if ( $value == $reverse_value ) {
        echo print_r( $value, true ) . "is a palindrome. The reverse is: " . print_r( $reverse_value, true ) . "<br />";
    }
    else {
        echo print_r( $value, true ) . "is a not a palindrome. The reverse is: " . print_r( $reverse_value, true ) . "<br />";
    }
}

Нет необходимости преобразовывать значение в строку;это происходит автоматически.Кроме того, ваш код дважды вызывал strrev (), поэтому я удалил лишний.

0 голосов
/ 17 мая 2011

Работает нормально, хотя на самом деле вы вообще не используете $ reverse_value.

if ($value == $reverse_value)
{
     ...

Что в вашей системе говорят $ value и $ reverse_value на самом деле?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...