Home > Mobile >  How to optimize if else in post method?
How to optimize if else in post method?

Time:10-02

I have mainly two question first describe what I going to do. I've created some animal in the code by saying that octopus will have 8 leggs,9 brain,1 stomach,3 heart similarly for other property.And by a html form using post method I'm taking input from user as showing the animals image if the description matches.

  1. I've also declared the corresponding animals name.I want to also show the name of the animal after matching(by printing $name). 2)Here I'm matching user input for each animal(by using if,elseif elseif) but how can I optimize so that if there is more than 100 animal I don't have to do 100 else if. Here is my code.
<?php
   class animal{
       var $name;
       var $brain;
       var $stomach;
       public $heart;
       public $leg;

       function __construct($aBrain, $aStomach, $aHeart, $aLeg)
       {
           $this->brain = $aBrain;
           $this->stomach = $aStomach;
           $this->heart = $aHeart;
           $this->setLeg($aLeg);
       }
       
       function isBipedal(){
           if ($this->leg == 2) {
               return "it is a bipedal animal";
           }else {
            return "it is not a bipedal animal";
           }
       }

       function getLeg(){
           return $this->leg;
       }

       function setLeg($leg){
           if ($leg == 8 ||$leg == 4 ||$leg == 2) {
            $this->leg= $leg; 
           }else {
            $this->leg= "non-pedal"; 
           }
       }
    }
    $octopus = new animal(9,1,3,8);  
    $cow = new animal(1,4,1,4); 
    $human = new animal(1,1,1,2);

    $octopus->setLeg(8);
    //echo  "new leg ".$octopus->leg = 0; 

    echo "<br>".$octopus->getleg();

    echo "<br>".$human->isBipedal(). "<br>"; 
    

    if(isset($_POST['submit']))  { 
        if(isset($_POST['brain']) 
        && isset($_POST['stomach'])  
        && isset($_POST['heart']) 
        && isset($_POST['leg']) ){

            $myBrain = $_POST['brain'];
            $myStomach = $_POST['stomach'];
            $myHeart = $_POST['heart'];
            $myLeg = $_POST['leg'];
            
            // echo "brain = ". $myBrain. "<br>"; 
            // echo "stomach = ". $myStomach. "<br>";
            // echo "heart = ". $myHeart. "<br>";
            // echo "leg = ". $myLeg. "<br>";

            if($myBrain==$octopus->brain
            && $myStomach==$octopus->stomach
            && $myHeart==$octopus->heart
            && $myLeg==$octopus->leg 
            ){ 
                ?>
                <div class="animal-info">

                <div><p class="blinking">You are Octopus</p></div>

                <img src="media/octopus.jpg" alt="" class="animal-img">
                <img src="media/octopus.gif" alt="" class="animal-img">
                </div>
            <?php
            }
            elseif($myBrain==$cow->brain
            && $myStomach==$cow->stomach
            && $myHeart==$cow->heart
            && $myLeg==$cow->leg 
            ){ 
                ?>
                <div class="animal-info">
                    
                <div>
                 <span class="blinking">You are Cow</span>
                </div>
                <img src="media/cow.jpg" alt="" class="animal-img">
                <img src="media/cow.gif" alt="" class="animal-img">
                </div>
            <?php
            }
            elseif($myBrain==$human->brain
            && $myStomach==$human->stomach
            && $myHeart==$human->heart
            && $myLeg==$human->leg 
            ){ 
                ?>
                <div class="animal-info">
                    <div>
                    <span class="blinking">You are Human</span>
                    </div>
                <img src="media/human.jpg" alt="" class="animal-img">
                <img src="media/human.gif" alt="" class="animal-img">
                </div>
            <?php
            }else{
                echo "you don't match with anything at all"; 
                        }
                    }
                }

            ?>

            <!DOCTYPE html>
            <html lang="en">
            <head>
                <meta charset="UTF-8">
                <meta http-equiv="X-UA-Compatible" content="IE=edge">
                <meta name="viewport" content="width=device-width, initial-scale=1.0">
                <title>Document</title>

                <link rel="stylesheet" href="style.css">
            </head>
            <body>
                <form action="" method="post">

                <span>How many brain you have?</span>
                <input type="text" name="brain" id="brain">
            <br>
                <span>How many stomach you have?</span>
                <input type="text" name="stomach" id="stomach">
            <br>
                
                <span>How many heart you have?</span>
                <input type="text" name="heart" id="heart">
            <br>
                
                <span>How many leg you have?</span>
                <input type="text" name="leg" id="leg"> 
            <br>

                <input type="submit" name="submit"  value="Let me see">

                </form>
            </body>
            </html>

CodePudding user response:

u should either store them in a DB and make a query, or store them in array and search by some linq equivalent in php

CodePudding user response:

Could You try with a Switch case?

<?php
if ($i == 0) {
    echo "i equals 0";
} elseif ($i == 1) {
    echo "i equals 1";
} elseif ($i == 2) {
    echo "i equals 2";
}

switch ($i) {
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
}
?>
  • Related