如何让 PHP 将我的变量视为数字?

How to make PHP see my variable as a number?

所以当我做作业时,我卡在了一点上。

该练习基于创建一个函数来检查 $word 是否为回文,根据我的测试 $L 有效并且正在向前移动到单词的右侧($L 从左边开始,$R 从右边开始) 但是 $R 根本不工作,如果 $R 被一个数字交换 - 它工作。如果打印 $R,它显示正确的数字 - 5.

$word = "madam";

function palindrome($s)
{
    $i = intval(strlen($s) / 2);    
    $L = 0;                 
    $R = strlen($s);        
    $pal = true;            

    for($i; $i>0; $i--)
    {
        if($s[$L] != $s[$R]) $pal=false;
        $L++; 
        $R--;
    }

    if($pal==true)
        print("palindrome");
    else
        print("not a palindrome");
}

palindrome($word);

我希望使 $R 成为一个值,我怀疑 PHP 将其视为一个字符串,而不是一个整数,但我不知道为什么。如果有人帮助我,我会很高兴。

如果您将字符串视为 char table,索引从 0 开始,但 strlen 从 1 开始计数,因此如果您有 'madam',则 strlen() returns 5 但最后一个字符是在 $s[4] 上,只需使用:

$R = strlen($s)-1;

作为一个快速的、脱颖而出的想法……没有循环,只是一些简单的字符串拆分,这可以检查给定的字符串 ($s) 是否是回文。

function palindrome($s) {

    // split the string in two
    $left = substr($s, 0, floor(strlen($s)/2));
    $right = substr($s, 0-strlen($left));

    // if the left half matches the REVERSE of the right
    // you've got a palindrome
    return $left === strrev($right);
}

$word = "madam";

echo palindrome($word) ? "Yup" : "Nope";

基本上,它只是将单词切成两半 - 反转右半部分并将其与左半部分进行比较。如果它们匹配,那就是回文 - 目前它是区分大小写的,所以 "Madam" 不会是回文,但可以通过首先将整个东西小写来轻松调整.