簡體   English   中英

一個函數中有多個IF語句-OOP

[英]multiple IF statements in a function - OOP

我想檢查輸入的三角形是否是等腰,等於等。第一個if語句有效,但是一旦我引入了第二個三角形,它說了意外的t_else,下面是代碼...

public function typeOfTriangle()
{ 
        if ($this->sideOneLength == $this->sideTwoLength && $this->sideTwoLength == $this->baseLength) {
            echo "<h1>Equilateral Triangle</h1>";
        else if ($this->sideOneLength == $this->sideTwoLength OR $this->sideOneLength == $this->baseLength OR $this->sideTwoLength == $this->baseLength) {
            echo "<h1>Isosceles Triangle</h1>";
    }
}

有任何想法嗎?

您有語法錯誤:

public function typeOfTriangle()
{ 
        if ($this->sideOneLength == $this->sideTwoLength && $this->sideTwoLength == $this->baseLength) {
            echo "<h1>Equilateral Triangle</h1>";
        }else if ($this->sideOneLength == $this->sideTwoLength OR $this->sideOneLength == $this->baseLength OR $this->sideTwoLength == $this->baseLength) {
            echo "<h1>Isosceles Triangle</h1>";
        }
}

需要大括號}

        if ($this->sideOneLength == $this->sideTwoLength && $this->sideTwoLength == $this->baseLength) {
            echo "<h1>Equilateral Triangle</h1>";
        }
        else if ($this->sideOneLength == $this->sideTwoLength OR $this->sideOneLength == $this->baseLength OR $this->sideTwoLength == $this->baseLength) {
            echo "<h1>Isosceles Triangle</h1>";
        }

我建議一種稍微不同的,更易讀的方法:

public function getSides()
{
    return array($this->sideOneLength, $this->sideTwoLength, $this->sideThreeLength);
}

public function typeOfTriangle()
{
    $uniqueSides = count(array_unique($this->getSides()));

    if ($uniqueSides == 1) {
        return "Equilateral";
    } elseif ($uniqueSides == 2) {
        return "Isosceles";
    } else {
        return "Normal triangle";
    }
}

也許這更好? (根據Vlad Preda的示例:

public function getSides()
{
    return array($this->sideOneLength, $this->sideTwoLength, $this->sideThreeLength);
}

public function typeOfTriangle()
{
    $uniqueSides = count(array_unique($this->getSides()));

    switch ($uniqueSides) {
      case 1:
        return "Equilateral";
        break;

      case 2:
        return "Isosceles";
        break;

      default:
        return "Normal triangle";
        break;
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM