PHP-尝试测试数组中的3位数字序列

时间:2014-06-10 19:06:09

标签: php arrays

我试图确定数组中是否存在三个连续的整数。我已经在几个PHP沙箱网站上测试了代码,但由于他们不允许使用fgets,我已经使用预先填充了5个整数的数组进行了测试。代码在这些情况下工作得很好,但是当用一个由用户输入填充的数组运行时,它会失败。我不确定问题出在哪里,但我们将非常感谢任何帮助。

<?php 
    echo "Enter 5 Numbers:";
    //{Write your code here
    $arr = array();
    for($i = 0; $i < 5; $i++){
        $arr[$i] = trim(fgets(STDIN));
    }
    sort($arr);
    function FindSeq($arr){
            for($i = 0; $i < 3; $i++){
                while($i < 3) {
                    $a = $i;
                    $b = $a + 1;
                    $c = $b + 1;
                    if(((($arr[$a]) + 1) === $arr[$b]) && ((($arr[$b]) + 1) === $arr[$c]) !== FALSE) {
                        exit("true");
                    }
                    else {
                        $i++;
                    }
                }
            }
        }
    FindSeq($arr);
    echo "false";
?>

2 个答案:

答案 0 :(得分:0)

这些行以字符串形式读入,但是添加+ 1会将其转换为整数。然后使用严格的比较===和字符串。使用松散比较==或将值转换为整数:

$arr[$i] = (int)trim(fgets(STDIN));

答案 1 :(得分:0)

这是一种快速的方法:

for($i = 2; $i=count($arr)-2; $i++) if(($arr[$i-1] == $arr[$i]+1) && ($arr[$i+1] == $arr[$i] + 1)) return true; return false;

循环编号说明您使用$ arr [1]作为数组的第一个元素。更漂亮的东西会更通用。