我不知道如何处理这个PHP代码

我不知道如何处理这个PHP代码,php,error-handling,fatal-error,palindrome,Php,Error Handling,Fatal Error,Palindrome,下面的代码基本上有助于确定一个数字是否是回文数字。虽然我通过输出完成了执行,但我似乎可以处理所有的尖叫和致命错误。我该怎么处理呢。我只是个初学者,相信你能用我能理解的方式解释 <?php for ($num = 1; $num <= 20; ++$num){ $_array1 = str_split($num); //print_r($_array1); //echo "<br/>"; $_ar

下面的代码基本上有助于确定一个数字是否是回文数字。虽然我通过输出完成了执行,但我似乎可以处理所有的尖叫和致命错误。我该怎么处理呢。我只是个初学者,相信你能用我能理解的方式解释

<?php

    for ($num = 1; $num <= 20; ++$num){

        $_array1 = str_split($num);
        //print_r($_array1);
        //echo "<br/>";

        $_array2 = array_reverse($_array1);
        //print_r($_array2);
        //echo "<br/>";

        $i = 0;
        $j = 0;

        while ($i < sizeof($_array1) && $j < sizeof($_array2)){
            if ($_array1[$i] == $_array2[$j]){
            ++$i;
            ++$j;
        }

        }

        if ($_array1[$i] == $_array2[$j]){
            echo "The number $num is a Palindrome Number";
        }
    }

?>

您可以得到元素的大小,即1。但是,如果您的数组只有一个元素,即1位数字的情况,则sizeof$\u数组===1。这意味着可以使用的最大索引是0。您需要将代码更改为以下内容:

<?php

    for ($num = 1; $num <= 20; ++$num){

        $_array1 = str_split($num);
        //print_r($_array1);
        //echo "<br/>";

        $_array2 = array_reverse($_array1);
        //print_r($_array2);
        //echo "<br/>";

        $i = 0;
        $j = 0;

        $different = false;
        while ((!$different) && ($i < sizeof($_array1))){
            if ($_array1[$i] == $_array2[$j]){
            ++$i;
            ++$j;
        } else {
            $different = true;
        }

        }

        if (!$different){
            echo "The number $num is a Palindrome Number";
        }
    }

?>
请注意:

该函数假定数组的键是数字 该函数使用单个数组 数组的大小存储在局部变量中,以避免重复计算 循环一直循环到阵列的一半,因为由于!=操作人员 当发现第一个差异时,函数返回false,以进一步优化检查 如果没有差异,则函数返回true,表示输入是回文
你得到了什么错误?尖叫:错误抑制被忽略:注意:未定义的偏移量:第24行的D:\wamp\www\PHP Projects Folder\palindrome\u numbers.PHP中的1,哪一行是24?如果$\u array1[$i]==$\u array2[$j]嘿Lajos,谢谢你,代码正在工作。是的,我想我很接近你放在这里的那个。但我只需要知道,为了理解,你使用$different=false是什么意思?这意味着什么?你能解释一下吗?@SricharanKrishnan,偏离航线。当您试图检查数组是否相似时,代码失败。最好的方法是搜索第一个差异。当你找到它时,你知道它不是回文。如果没有发现差异,那么数组是相似的,因此它是回文$差异在一开始是错误的,因为还没有发现差异。当我们找到第一个差异时,我们将其设置为true。如果循环后仍然为false,则数组是相似的。如果我的答案解决了这个问题,你可以考虑接受它:嘿,Lajos,这真的很棒。非常感谢你的帮助。这是有道理的。是的,听起来不错,请为我祈祷,我会变得像你一样好。只是希望事情会对我有利!祝您有个美好的一天。
function isPalindrome($input) {
    $size = count($input);
    for ($index = 0; $index < $size / 2; $index++) {
        if ($input[$index] != $input[$size - $index - 1]) {
            return false;
        }
    }
    return true;
}