php在if elseif和else语句中使用模数

时间:2014-02-24 22:47:26

标签: php

这是我的问题我编写的代码将返回单词“Fizz”如果数字可以除以3而“Buzz”如果它可以被5整除。而“FizzBu​​zz”如果数字可以被3和5整除。 这是我的代码

*

<?php
function fizzbuzz(i)
   if $i % 5 == 0 and $i % 3 == 0
     echo "FizzBuzz";
elsif $i % 5 == 0
     echo "Buzz";
elsif $i % 3 == 0
     echo "Fizz";
else
echo $i;
?>

*

2 个答案:

答案 0 :(得分:0)

大括号不是邪恶的,一直使用它们,它将帮助您更轻松,更快地调试,并为您节省宝贵的头痛和恼人的错误。

代码:(当然为了实际工作,你需要一个包装器来使用这个功能)

<?php

    function fizzbuzz(i) {
        if ($i%5 == 0 && $i%3 == 0) {
            echo "FizzBuzz";
        }
        elsif ($i%5 == 0) {
            echo "Buzz";
        }
        elsif ($i%3 == 0) {
            echo "Fizz";
        }
        else {
            echo $i;
        }
    }
?>

答案 1 :(得分:0)

虽然您提供的代码不是有效的PHP代码,并且您实际上并未提出有关您需要帮助的问题,但我将尝试以非常通用的方式解决您的帖子,尽可能有用且客观。

FizzBu​​zz问题意味着让你思考。他们的意图不是回答这个问题。任何对数学和任何计算机编程语言有内在理解的人都可以回答FizzBu​​zz问题。

相反,使用代码来陶醉解决方案的表达式。代码,就像诗歌一样,意味着美丽,因为虽然它意味着由机器运行,但它也意味着被人类阅读

这是一种在有效的PHP代码中放置相同解决方案的更具表现力和优雅的方式。

function fizzBuzz($int) {
    /**
    *  Since this is a function we want to return a value and not print it.
    *  So instead we initialize a variable to return the result.
    */
    $returnValue = ""; // initialize an empty string

    /* Create a map of divisors to words */
    $divisors = array(3 => "Fizz", 5 => "Buzz");

    /* Iterate over the map to find divisors of no remainder for $int */
    foreach ($divisors as $divisor => $word) {
        if (!($int % $divisor)) {
            $returnValue .= $word;
        }
    }

    /* Finally, if the $returnValue is empty we return $int instead */
    if (!$returnValue) {
        $returnValue = $int;
    }

    return $returnValue;
}

该代码旨在便于携带且易于理解。它的设计也很优雅,因为添加更多的除数和单词不需要额外的代码行。只需附加 divisor =&gt; $divisor数组中的单词对。此外,请记住,函数应该返回值,而不是只是为您直接打印它们。这是使functions有用的部分原因。

以下是如何使用该功能的示例。

echo fizzBuzz(1); // 1
echo fizzBuzz(3); // Fizz
echo fizzBuzz(5); // Buzz
echo fizzBuzz(15); // FizzBuzz