为什么不计算任何数量?

时间:2016-01-29 17:44:33

标签: php count

我无法进行简单的计数工作。现在0在我运行代码时不断显示,我知道它因为我将计数设置为0.但它应该显示次数" Fizz"被展示。

我确定它很简单,但我无法看到它!

public function __construct($firstParam, $secondParam, $firstSound = "Fizz", $secondSound = "Buzz", $numbers = 100) {
        $this->firstParam = $firstParam;
        $this->secondParam = $secondParam;
        $this->firstSound = $firstSound;
        $this->secondSound = $secondSound;
        $this->numbers = $numbers;
        $this->numsArray = $numsArray;
    }

    public function __toString() {
        $count = 0;
        for ($i = 0; $i < count($this->numsArray); $i++){
            $val = $this->numsArray[$i];
            if ($val == $this->firstSound) {
                $count++;
            }
        }
        $print = "Number of Fizzes: ".$count;
        return $print;
    }

    public function execute() {
        $this->numsArray = array();
        if ($this->secondParam > $this->firstParam) {
            for ($i = 1; $i <= $this->numbers; $i++){
                if ($i % $this->firstParam == 0 && $i % $this->secondParam == 0) {
                    $this->numsArray[] = "\n".$this->firstSound.$this->secondSound."\n";
                } elseif ($i % $this->firstParam == 0) {
                    $this->numsArray[] = "\n".$this->firstSound."\n";
                } elseif ($i % $this->secondParam == 0) {
                    $this->numsArray[] = "\n".$this->secondSound."\n";
                } else {
                    $this->numsArray[] = "\n".$i."\n";
                }
                echo $this->numsArray[$i-1];
            }
        } else {
            echo "\n".' First Number Bigger Than Second '."\n";
        }
    }

1 个答案:

答案 0 :(得分:0)

在执行中,您没有将值分配给numsArray [i],也会注入新的行字符,这些字符与检查$ val时的相等性不匹配。另外我注意到你使用零索引来检查它们并使用索引1来加载它。将执行更改为:

for ($i = 0; $i < $this->numbers; $i++){
   if ($i % $this->firstParam == 0 && $i % $this->secondParam == 0) {
      $this->numsArray[i] = $this->firstSound.$this->secondSound;
   } elseif ($i % $this->firstParam == 0) {
      $this->numsArray[i] = $this->firstSound;
   } elseif ($i % $this->secondParam == 0) {
      $this->numsArray[i] = $this->secondSound;
   } else {
      $this->numsArray[i] = $i;
   }
   echo $this->numsArray[$i];

对于php来说,这是一个更好的二进制字符串比较...

if (strcmp($val, $this->firstSound) == 0)