将String转换为数字并将其还原为PHP

时间:2011-05-17 17:40:57

标签: php math string

我需要检查一个数字是否是回文,我开始认为可能是最好的方法,将数字转换为字符串并验证反向字符串是否相同。

问题是,当我使用以下代码时,我得到了错误的结果。

<?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 个答案:

答案 0 :(得分:1)

似乎你有更深层次的问题,因为我只是将代码放入ide:

https://ideone.com/yJEz1

结果:90209 is a palindromestring

它成功地推出了价值。您可能想要检查关于更改的数学设置的php.ini,或者只是在不同的上下文中再次运行代码,或清除代码中的重复,它可能会给您正确的结果。

以下是使用(string)强制转换来确保字符串类型的相同代码(我从未使用过strval()函数,就个人而言,我只是强制转换类型)。它适用于所有三个测试用例。 https://ideone.com/4bI0O

答案 1 :(得分:0)

虽然你根本没有使用$ reverse_value,但它工作正常。

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

你的系统说$ value和$ reverse_value实际上是什么?

答案 2 :(得分:0)

以下是适用的优化版本:

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()两次,所以我删除了多余的代码。