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

标签 php error-handling fatal-error palindrome

下面的代码基本上有助于找出一个数字是否是 Palindromic Number或不。尽管我用输出完成了我的执行,但我似乎可以处理我得到的所有“尖叫”和 fatal error 。我该如何处理。只是一个初学者,相信你可以用我能理解的方式解释..

<?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。但是,如果您的 array只有一个元素,这是 1 位数字的情况,然后 sizeof($_array) === 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";
        }
    }

?>

但是你正在反转 array无需这样做,并且您正在循环不必要的长时间。我建议 function判断一个数组是否是回文:
function isPalindrome($input) {
    $size = count($input);
    for ($index = 0; $index < $size / 2; $index++) {
        if ($input[$index] != $input[$size - $index - 1]) {
            return false;
        }
    }
    return true;
}

注意:
  • function假设 array 的键是数字
  • function使用单个 array
  • array 的大小存储到局部变量中,不重复计算
  • 循环循环直到 array 的一半,由于 != 的对称性,没有必要超出此范围。接线员
  • function返回 false当发现第一个差异时,进一步优化检查
  • 如果没有差异,function返回 true ,表示输入是回文
  • 关于php - 我不知道如何处理这个 PHP 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35813970/

    相关文章:

    javascript - 用于二进制 JSON(或类似格式)的可移植 PHP/Javascript 插件?

    c# - 如果语句跳过条件

    CakePHP 1.3 错误 : Fatal error: Call to a member function cd() on a non-object in/var/www/html/projectname/cake/libs/cache/file. php 在线 248

    apache - 403访问图像时禁止

    javascript - 提交时立即显示所有内联验证消息

    java - JNI 崩溃 JVM - Java 运行时环境 : EXCEPTION_ACCESS_VIOLATION 检测到 fatal error

    ocaml - 递归函数中大整数的异常 Stack_overflow

    javascript - 如果已经发布,如何限制用户不再在同一页面上发布

    javascript - 如何通过 PHP 连接 javascript 和 MySQL?

    javascript - 如何在不刷新页面的情况下更改路由和内容? (机器人友好)