如何解释生成器语句:if($ current%3 == 0&& $ current%5 == 0)

时间:2018-02-13 23:41:44

标签: php generator

我正在通过Welling& amp;的PHP和MySQL Web开发工作。汤姆森。

在生成器上有一段代码示例(清单6.5第193页):

<?php

function fizzbuzz($start, $end)
{
  $current = $start;
  while ($current <= $end) {
    if ($current%3 == 0 && $current%5 == 0) {
      yield "fizzbuzz";
    } else if ($current%3 == 0) {
      yield "fizz";
    } else if ($current%5 == 0) {
      yield "buzz";
    } else {
      yield $current;
    }
    $current++;
  }
}

foreach(fizzbuzz(1,20) as $number) {
  echo $number.'<br />';
}
?>

我在第7行中知道它意味着是否可以被3或5整除&#34; fizzbuzz。&#34;但是,当我看到它时,我将该行解释为(如果当前变量可被3整除并等于零&#34;和#34;如果当前变量可被5整除且等于零)。

如果它等于零,则它不能被3或5整除。但是,代码有效。那么== 0部分的平均值是否等于3或5而没有剩余的部分数?

2 个答案:

答案 0 :(得分:1)

%表示模量。你除以余数,然后看看余数是否等于零。如果A%B == 0,则A可被B整除。

一些例子:
7%2 = 1
10%4 = 2
100%4 = 0
37%19 = 18
3337%78 = 61

在该行上它意味着&#34;如果当前可被3整除并且也可以被7&#34;整除。

答案 1 :(得分:0)

我想我明白你哪里出错了。陈述1 modulus 3 = 1 2 modulus 3 = 2 3 modulus 3 = 0 4 modulus 3 = 1 5 modulus 3 = 2 6 modulus 3 = 0 (我为可读性添加了几个空格)真的说'#34; $ current modulus 3等于0.&#34;

我们使用模数函数来确定某些东西是否可以被整除而没有余数,并且当结果为零时会发生这种情况。换句话说......

{{1}}

如您所见,当数字可以被整除时,结果只为零。