首页 > 解决方案 > PHP检查一个值是否是具有共同差异的数字序列的一部分

问题描述

我正在编写一个脚本,需要识别序列的第一个数字为 0 的每 7 个数字(因此序列为 6、13、20、27、34、41、48 等)

这是我到目前为止所得到的(以有限的方式工作),但我更喜欢编写一个循环,以便不必对序列中的值进行硬编码:

<?php

$x = 7;

if ($x === 6 || $x === 13 || $x === 20 || $x === 27 || $x === 34 || $x === 41 || $x === 48) {
    $result = 1;
  } else {
    $result = 0;
}

echo $result;

?>

提前感谢您的任何建议!


更新:这是我使用@robbieaverill 的解决方案并根据数组检查值的更新脚本。这里有很多很棒的解决方案,谢谢大家!

<?php

$divisor = 7;
$limit = 500; 

$sequence = array();

for ($i = 0; $i <= $limit; $i++) {
  if (is_int(($i + 1) / $divisor)) {
    $sequence[] = $i;
  }
}

$x = 41;

if (in_array($x, $sequence, true)) {
  $result = 1;
} else {
  $result = 0;
}

echo $result;
?>

此处的输出为 1,表示如果 $x 的值为 41,则在 $sequence 数组中找到它。

标签: phpmath

解决方案


可能有很多不同的方法可以做到这一点。如果您需要识别可被 7 整除的数字(加一,因为您是从零开始的),您可以执行以下操作:

$divisor = 7;
$limit = 100; // when do you want to stop searching?

for ($i = 0; $i <= $limit; $i++) {
    if (is_int(($i + 1) / $divisor)) {
        var_dump($i);
    }
}

请注意,is_int()检查除法结果是否为整数,对于小数/浮点数,它将返回 false。


推荐阅读