我正在编写一个脚本,该脚本需要标识第7个数字,其中序列的第一个数字为0(因此序列为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数组中找到它。
答案 0 :(得分:2)
您可能有多种方法可以执行此操作。如果您需要确定可以被7整除的数字(加1,因为您是基于零的数字),则可以执行类似this的操作:
$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。
答案 1 :(得分:1)
这是使用modulus operator的另一种方法:
ValueMember
由于您说过“需要识别每个第7个数字” ,您可能只想检查给定数字是否为7之一,这意味着您要测试一个函数。那么这可能会有所帮助:
<?php
$start = 0;
$sequence = 7;
$limit = 100;
for ($i=$start; $i<$limit; $i++) {
// if the divition of the current number / the sequence is a full number (there is no remainder) and we're not at 0
if(($i+1) % $sequence == 0 && $i!=0) {
echo $i . "<br>";
}
}
// output:
6
13
20
27
34
41
48
55
62
69
76
83
90
97
答案 2 :(得分:1)
在序号$i
上加1并使用模数n
并返回$i % 7 == 0
。
例如
function isNth(int $i, int $nth, int $offset = -1): bool
{
return !(($i - $offset) % $nth);
}
用法示例:
foreach ([0,1,2,3,4,5,6,7,8,9,10,11,12,13] as $number)
{
if (isNth($number, 7)) print "$number\n";
}
// will print 6\n13\n
foreach ([1,2,3,4,5,6,7,8,9,10,11,12,13,14] as $number)
{
if (isNth($number, 7, 0)) print "$number\n";
}
// will print 7\n14\n
答案 3 :(得分:1)
考虑使用range
来生成系列:
$begin = 6;
$end = 48;
$step = 7;
$seq = range($begin, $end, $step);
print_r($seq);
然后您可以使用in_array
检查数字是否在该系列中:
if (in_array(41, $seq)) // ...
这绝不是高效的,但是对于小系列来说,这是一个显而易见的实现。简而言之,我的意思是成千上万个条目或更少。
答案 4 :(得分:0)
这样的解决方案也可以。
$index = 0;
for($i = 0; $i <= 700; $i++){
if($index == 6){
echo $i . "<br/>";
$index = 0;
} else {
$index++;
}
}
将输出 6 13 20 27 34 41 48 55
答案 5 :(得分:0)
通常,我们可以这样写一个算术序列:
{a, a+d, a+2d, a+3d, ... }
哪里 a = 6(第一项) d = 7(两个词之间的“共同差异”)
所以我们可以拥有 {a,a + d,a + 2d,a + 3d,...}
{6,6 + 7,6 + 2×7,6 + 3×7,...}
{6,13,20,27,...} 所以我们可以有一条规则
x[n] = a + d(n−1)
可以如下所示用php编写
<?php
$a=6;
$n=10; //number of terms
$d=7;
for($i=1;$i<=10;$i++){
echo $term=$a+($i-1)*$d;
echo "<br>";
}
?>
答案 6 :(得分:-2)
因此,如果您有一个数字列表,最好的办法就是
TFRecordDataset
将输出 发现并发生。值是56 发现并发生。值是3