用php创建一个程序,在一系列数字中查找缺失的数字

用php创建一个程序,在一系列数字中查找缺失的数字,php,loops,numbers,find,sequence,Php,Loops,Numbers,Find,Sequence,我需要一个问题的帮助,我需要用php编写代码,这将 查找序列中缺少的数字,而不考虑该数字在序列中的位置 数字将增加,但每次的数量相同 输出必须是初始列表中缺少的数字,而不仅仅是包含数字的列表(我自己已经计算出来) 示例数字序列,$sequence=3,5,9,11,13 很明显,数字7不见了,但我不知道如何编写代码,我假设它会使用循环,但我甚至不知道如何启动,它必须是用PHP编写的 <?php $str="3,5,9,11,13" ; $arr=explode(',', $str);

我需要一个问题的帮助,我需要用php编写代码,这将

  • 查找序列中缺少的数字,而不考虑该数字在序列中的位置
  • 数字将增加,但每次的数量相同
  • 输出必须是初始列表中缺少的数字,而不仅仅是包含数字的列表(我自己已经计算出来)
示例数字序列,$sequence=3,5,9,11,13 很明显,数字7不见了,但我不知道如何编写代码,我假设它会使用循环,但我甚至不知道如何启动,它必须是用PHP编写的
 <?php
$str="3,5,9,11,13" ;
$arr=explode(',', $str);
$no=array();
for ($i=3; $i <30 ; $i=$i+2) { 
    $m=$i+2;
    if (!(in_array($m, $arr)))
  {
  $no[]=$m;
  }
    }



    print_r($no);
// OUTPUT- Array ( [0] => 7 [1] => 15 )
     ?>

仅使用前三个元素查找间隔(需要三取二匹配),不验证序列的其余部分是否遵循规则,但也会查找更多缺少的元素:

<?php

$sequence = array(3, 5, 9, 13, 15, 17, 21);

// guess
$step = $sequence[1] - $sequence[0];
// validate
if (($sequence[2] - $sequence[1]) != $step) {
    if (($sequence[3] - $sequence[2]) != $step) {
        $step = $sequence[2] - $sequence[1];
        if (($sequence[3] - $sequence[2]) != $step) {
            die('first three intervals are all different');
        }
    }
}

$should = range($sequence[0], $sequence[count($sequence) - 1], $step);
echo 'Missing: ', implode(', ', array_diff($should, $sequence));

从序列中获取缺失数字的一种更简单的方法,我的看法是:

<?php
    $sequence = array(3, 5, 9, 11, 13);
    $numbers = array(7, 9, 15);
    $single_nr = 7;
    function getMissingNumber(array $sequence, $single_nr = null, $numbers = array())
    {
        // Check if it exists in the sequence array
        // check single number
        if($single_nr)
        {
            if(!in_array($single_nr, $sequence))
            {
                echo $single_nr . " is not in array" . "<br />";
            }
        }

        // check an array of numbers
        if($numbers)
        {
            foreach($numbers as $nr)
            {
                if(!in_array($nr, $sequence))
                {
                    echo $nr . " is not in array" . "<br />";
                }
            }
        }
    }

    echo getMissingNumber($sequence, null, $numbers);
?>


很好。请显示您的努力,它将使用循环,可能还有数组。这已经是一个好的开始。试着把你的列表放入一个数组中,然后循环这个数组作为开始。你需要一些非常奇特的逻辑,这对于一个普通的问题/答案来说可能太宽泛了。有一些算法可以找到模式,但大多数算法最多只能处理几种类型的模式。你为什么回答这些问题?@Erdem Ece我不明白!他不写任何代码,但要求别人写他的代码。这不是一个自由职业者的地方。@Erdem Ece我完全同意你的观点,我相信你是对的,但这只是他自己的损失,因为他不想自己而不是我,因为他的技能不会提高!他要求一个解决方案,我提供了一个@sunny我实际上是做代码的,但是我对php这种编程相对来说是新手,这个问题是在一次工作面试中向我提出的(显然我没有得到这份工作,我不明白他们在找什么)但我想找到一个解决方案,从经验中学习,所以我想找一些更有经验的人,他们可能会给我指出正确的方向,这样我就可以自己学习,而不是完整的答案。