简体   繁体   中英

Is there way to simplify this code too many if else statment

The Code supposed to rate user input and get the correct answer for the User. it works alright but just want to minimize it may be implment it in MVC. am getting the variables from Ajax post. Need Your Help if is possible Thanx a lot.

<?php
    function getResults($type) {

        // variables to store Ajax post Data.
        $period = $_POST ['duration'];
        $place = $_POST ['vacationplace'];
        $serv = $_POST ['services'];
        $disc = $_POST ['discovery'];
        $Trans = $_POST ['transport'];
        $accomp = $_POST ['accompanied'];
        $stars = $_POST ['stars'];

        // Results Array
        $type = array (
                0 => array (
                        "val" => 0,
                        "title" => "Weltenbummler" 
                ),

                1 => array (

                        "val" => 0,
                        "title" => "Luxusliebhaber" 
                ),
                2 => array (
                        "val" => 0,
                        "title" => "Naturbursche/-madle" 
                ),
                3 => array (
                        "val" => 0,
                        "title" => "Sunnyboy/-girl" 
                ),
                4 => array (
                        "val" => 0,
                        "title" => "Wasserratte" 
                ),
                5 => array (
                        "val" => 0,
                        "title" => "Wellnessliebhaber" 
                ),
                6 => array (
                        "val" => 0,
                        "title" => "Adrenalinjunkie" 
                ),
                7 => array (
                        "val" => 0,
                        "title" => "Städtebummler" 
                ) 
        );

        $type [] = "";
        // Expenditure ranges
        $exp = explode ( ',', $_POST ['userBudget'] );
        foreach ( $exp as $key => $arrE ) {
            $arrEx = $arrE;
            if ($arrE < 300) {
                $type [0] ["val"] += 0;
                $type [1] ["val"] += .1;
                $type [2] ["val"] += .5;
                $type [3] ["val"] += .3;
                $type [4] ["val"] += .7;
                $type [5] ["val"] += 1;
                $type [6] ["val"] += .1;
                $type [7] ["val"] += .1;
            }
            if ($arrEx >= 300 && $arrEx <= 500) {
                $type [0] ["val"] += 0;
                $type [1] ["val"] += 1;
                $type [2] ["val"] += 1;
                $type [3] ["val"] += 1;
                $type [4] ["val"] += 1;
                $type [5] ["val"] += 1;
                $type [6] ["val"] += 0;
                $type [7] ["val"] += 1;
            }
            if ($arrEx >= 600 && $arrEx <= 800) {
                $type [0] ["val"] += 1;
                $type [1] ["val"] += 1;
                $type [2] ["val"] += 1;
                $type [3] ["val"] += 1;
                $type [4] ["val"] += 1;
                $type [5] ["val"] += 1;
                $type [6] ["val"] += 1;
                $type [7] ["val"] += 1;
            }
            if ($arrEx >= 900 && $arrEx <= 1000) {
                $type [0] ["val"] += 1;
                $type [1] ["val"] += 1;
                $type [2] ["val"] += 1;
                $type [3] ["val"] += 1;
                $type [4] ["val"] += 1;
                $type [5] ["val"] += 1;
                $type [6] ["val"] += 1;
                $type [7] ["val"] += 1;
            }
            if ($arrEx >= 1500 && $arrEx <= 3000) {
                $type [0] ["val"] += 1;
                $type [1] ["val"] += 1;
                $type [2] ["val"] += 1;
                $type [3] ["val"] += 1;
                $type [4] ["val"] += 1;
                $type [5] ["val"] += 1;
                $type [6] ["val"] += 1;
                $type [7] ["val"] += 1;
            }
        }

        // seasons
        $Season = explode ( ',', $_POST ['seasonString'] );
        foreach ( $Season as $key => $arrS ) {
            $arrSe = $arrS;
            if ($arrSe == "1") {
                $type [0] ["val"] += .5;
                $type [1] ["val"] += .5;
                $type [2] ["val"] += .5;
                $type [3] ["val"] += .5;
                $type [4] ["val"] += .5;
                $type [5] ["val"] += .5;
                $type [6] ["val"] += .5;
                $type [7] ["val"] += .5;
            }
            if ($arrSe == "2") {
                $type [0] ["val"] += .5;
                $type [1] ["val"] += .5;
                $type [2] ["val"] += .5;
                $type [3] ["val"] += .5;
                $type [4] ["val"] += .5;
                $type [5] ["val"] += .5;
                $type [6] ["val"] += .5;
                $type [7] ["val"] += .5;
            }
            if ($arrSe == "3") {
                $type [0] ["val"] += .5;
                $type [1] ["val"] += .5;
                $type [2] ["val"] += .5;
                $type [3] ["val"] += .5;
                $type [4] ["val"] += .5;
                $type [5] ["val"] += .5;
                $type [6] ["val"] += .5;
                $type [7] ["val"] += .5;
            }
            if ($arrSe == "4") {
                $type [0] ["val"] += .5;
                $type [1] ["val"] += .5;
                $type [2] ["val"] += .5;
                $type [3] ["val"] += .3;
                $type [4] ["val"] += .3;
                $type [5] ["val"] += .5;
                $type [6] ["val"] += .3;
                $type [7] ["val"] += .5;
            }
        }

        // user desires
        $desires = explode ( ',', $_POST ['desiresString'] );
        foreach ( $desires as $key => $arrD ) {
            $arrDe = $arrD;
            if ($arrDe == "1") {
                $type [0] ["val"] += 0;
                $type [1] ["val"] += 0;
                $type [2] ["val"] += .5;
                $type [3] ["val"] += 0;
                $type [4] ["val"] += 0;
                $type [5] ["val"] += 0;
                $type [6] ["val"] += 0;
                $type [7] ["val"] += .2;
            }
            if ($arrDe == "2") {
                $type [0] ["val"] += .5;
                $type [1] ["val"] += .5;
                $type [2] ["val"] += .5;
                $type [3] ["val"] += 1;
                $type [4] ["val"] += 1;
                $type [5] ["val"] += .5;
                $type [6] ["val"] += .7;
                $type [7] ["val"] += 1;
            }
            if ($arrDe == "3") {
                $type [0] ["val"] += .5;
                $type [1] ["val"] += .5;
                $type [2] ["val"] += 1;
                $type [3] ["val"] += .7;
                $type [4] ["val"] += 1;
                $type [5] ["val"] += .5;
                $type [6] ["val"] += .7;
                $type [7] ["val"] += .5;
            }
            if ($arrDe == "4") {
                $type [0] ["val"] += 1;
                $type [1] ["val"] += .5;
                $type [2] ["val"] += .5;
                $type [3] ["val"] += 1;
                $type [4] ["val"] += .7;
                $type [5] ["val"] += .7;
                $type [6] ["val"] += 1;
                $type [7] ["val"] += 1;
            }
            if ($arrDe == "5") {
                $type [0] ["val"] += .5;
                $type [1] ["val"] += .3;
                $type [2] ["val"] += .5;
                $type [3] ["val"] += .7;
                $type [4] ["val"] += .8;
                $type [5] ["val"] += .3;
                $type [6] ["val"] += .5;
                $type [7] ["val"] += .8;
            }
            if ($arrDe == "6") {
                $type [0] ["val"] += 0;
                $type [1] ["val"] += .7;
                $type [2] ["val"] += .5;
                $type [3] ["val"] += .7;
                $type [4] ["val"] += 1;
                $type [5] ["val"] += 1;
                $type [6] ["val"] += .4;
                $type [7] ["val"] += .3;
            }
            if ($arrDe == "7") {
                $type [0] ["val"] += .8;
                $type [1] ["val"] += .3;
                $type [2] ["val"] += .3;
                $type [3] ["val"] += .3;
                $type [4] ["val"] += .3;
                $type [5] ["val"] += .3;
                $type [6] ["val"] += .8;
                $type [7] ["val"] += 1;
            }
            if ($arrDe == "8") {
                $type [0] ["val"] += .8;
                $type [1] ["val"] += .3;
                $type [2] ["val"] += .9;
                $type [3] ["val"] += .7;
                $type [4] ["val"] += 1;
                $type [5] ["val"] += 1;
                $type [6] ["val"] += .7;
                $type [7] ["val"] += .3;
            }
        }

        // vacations period

        if ($period == "1") {
            $type [0] ["val"] += 1;
            $type [1] ["val"] += .5;
            $type [2] ["val"] += .8;
            $type [3] ["val"] += 1;
            $type [4] ["val"] += .8;
            $type [5] ["val"] += .5;
            $type [6] ["val"] += .7;
            $type [7] ["val"] += .6;
        }
        if ($period == "2") {
            $type [0] ["val"] += 1;
            $type [1] ["val"] += .9;
            $type [2] ["val"] += .8;
            $type [3] ["val"] += .8;
            $type [4] ["val"] += .9;
            $type [5] ["val"] += 1;
            $type [6] ["val"] += .9;
            $type [7] ["val"] += 1;
        }
        if ($period == "3") {
            $type [0] ["val"] += 1;
            $type [1] ["val"] += 1;
            $type [2] ["val"] += 1;
            $type [3] ["val"] += 1;
            $type [4] ["val"] += 1;
            $type [5] ["val"] += 1;
            $type [6] ["val"] += 1;
            $type [7] ["val"] += 1;
        }
        if ($period == "4") {
            $type [0] ["val"] += 1;
            $type [1] ["val"] += 1;
            $type [2] ["val"] += 1;
            $type [3] ["val"] += 1;
            $type [4] ["val"] += 1;
            $type [5] ["val"] += 1;
            $type [6] ["val"] += 1;
            $type [7] ["val"] += 1;
        }

        // Vacation places
        if ($place == "1") {
            $type [0] ["val"] += 0;
            $type [1] ["val"] += .9;
            $type [2] ["val"] += .7;
            $type [3] ["val"] += .7;
            $type [4] ["val"] += .7;
            $type [5] ["val"] += .9;
            $type [6] ["val"] += .5;
            $type [7] ["val"] += 1;
        }
        if ($place == "2") {
            $type [0] ["val"] += 1;
            $type [1] ["val"] += .9;
            $type [2] ["val"] += .7;
            $type [3] ["val"] += .9;
            $type [4] ["val"] += .9;
            $type [5] ["val"] += .9;
            $type [6] ["val"] += .9;
            $type [7] ["val"] += .9;
        }
        if ($place == "3") {
            $type [0] ["val"] += 1;
            $type [1] ["val"] += 1;
            $type [2] ["val"] += .9;
            $type [3] ["val"] += 1;
            $type [4] ["val"] += .9;
            $type [5] ["val"] += .8;
            $type [6] ["val"] += 1;
            $type [7] ["val"] += .9;
        }

        // Hotel Services

        if ($serv == "1") {
            $type [0] ["val"] += .08;
            $type [1] ["val"] += .08;
            $type [2] ["val"] += .08;
            $type [3] ["val"] += .08;
            $type [4] ["val"] += .08;
            $type [5] ["val"] += .08;
            $type [6] ["val"] += .08;
            $type [7] ["val"] += .08;
        }
        if ($serv == "2") {
            $type [0] ["val"] += .09;
            $type [1] ["val"] += .09;
            $type [2] ["val"] += .09;
            $type [3] ["val"] += .09;
            $type [4] ["val"] += .09;
            $type [5] ["val"] += .09;
            $type [6] ["val"] += .09;
            $type [7] ["val"] += .09;
        }
        if ($serv == "3") {
            $type [0] ["val"] += 1;
            $type [1] ["val"] += 1;
            $type [2] ["val"] += 1;
            $type [3] ["val"] += 1;
            $type [4] ["val"] += 1;
            $type [5] ["val"] += 1;
            $type [6] ["val"] += 1;
            $type [7] ["val"] += 1;
        }

        // Place Discoveries

        if ($disc == "1") {
            $type [0] ["val"] += .09;
            $type [1] ["val"] += .07;
            $type [2] ["val"] += .08;
            $type [3] ["val"] += .08;
            $type [4] ["val"] += .08;
            $type [5] ["val"] += .08;
            $type [6] ["val"] += .05;
            $type [7] ["val"] += .05;
        }
        if ($disc == "2") {
            $type [0] ["val"] += 1;
            $type [1] ["val"] += .09;
            $type [2] ["val"] += .08;
            $type [3] ["val"] += .06;
            $type [4] ["val"] += .05;
            $type [5] ["val"] += 1.05;
            $type [6] ["val"] += 1;
            $type [7] ["val"] += 1;
        }

        // Transportation
        if ($Trans == "1") {
            $type [0] ["val"] += .09;
            $type [1] ["val"] += .06;
            $type [2] ["val"] += .05;
            $type [3] ["val"] += .05;
            $type [4] ["val"] += .05;
            $type [5] ["val"] += 1;
            $type [6] ["val"] += .09;
            $type [7] ["val"] += 1;
        }
        if ($Trans == "2") {
            $type [0] ["val"] += 1;
            $type [1] ["val"] += .09;
            $type [2] ["val"] += .06;
            $type [3] ["val"] += 1;
            $type [4] ["val"] += .09;
            $type [5] ["val"] += .04;
            $type [6] ["val"] += 1;
            $type [7] ["val"] += .09;
        }
        if ($Trans == "3") {
            $type [0] ["val"] += .09;
            $type [1] ["val"] += .09;
            $type [2] ["val"] += .08;
            $type [3] ["val"] += .05;
            $type [4] ["val"] += .07;
            $type [5] ["val"] += .09;
            $type [6] ["val"] += .06;
            $type [7] ["val"] += 1;
        }

        // Hotel Ratting

        if ($stars == "1") {
            $type [0] ["val"] += .05;
            $type [1] ["val"] += .05;
            $type [2] ["val"] += .05;
            $type [3] ["val"] += .05;
            $type [4] ["val"] += .05;
            $type [5] ["val"] += .05;
            $type [6] ["val"] += .05;
            $type [7] ["val"] += .05;
        }
        if ($stars == "2") {
            $type [0] ["val"] += .06;
            $type [1] ["val"] += .06;
            $type [2] ["val"] += .06;
            $type [3] ["val"] += .06;
            $type [4] ["val"] += .06;
            $type [5] ["val"] += .06;
            $type [6] ["val"] += .06;
            $type [7] ["val"] += .06;
        }
        if ($stars == "3") {
            $type [0] ["val"] += .07;
            $type [1] ["val"] += .07;
            $type [2] ["val"] += .07;
            $type [3] ["val"] += .07;
            $type [4] ["val"] += .07;
            $type [5] ["val"] += .07;
            $type [6] ["val"] += .07;
            $type [7] ["val"] += .07;
        }
        if ($stars == "4") {
            $type [0] ["val"] += .09;
            $type [1] ["val"] += .09;
            $type [2] ["val"] += .09;
            $type [3] ["val"] += .09;
            $type [4] ["val"] += .09;
            $type [5] ["val"] += .09;
            $type [6] ["val"] += .09;
            $type [7] ["val"] += .09;
        }
        if ($stars == "5") {
            $type [0] ["val"] += 1;
            $type [1] ["val"] += 1;
            $type [2] ["val"] += 1;
            $type [3] ["val"] += 1;
            $type [4] ["val"] += 1;
            $type [5] ["val"] += 1;
            $type [6] ["val"] += 1;
            $type [7] ["val"] += 1;
        }

        // Traveling with Partner, Family or Alone
        if ($accomp == "1") {
            $type [0] ["val"] += .19;
            $type [1] ["val"] += .19;
            $type [2] ["val"] += .18;
            $type [3] ["val"] += .20;
            $type [4] ["val"] += .20;
            $type [5] ["val"] += .19;
            $type [6] ["val"] += 1;
            $type [7] ["val"] += 1;
        }
        if ($accomp == "2") {
            $type [0] ["val"] += .20;
            $type [1] ["val"] += .20;
            $type [2] ["val"] += .16;
            $type [3] ["val"] += .20;
            $type [4] ["val"] += .20;
            $type [5] ["val"] += .20;
            $type [6] ["val"] += .17;
            $type [7] ["val"] += .15;
        }
        if ($accomp == "3") {
            $type [0] ["val"] += .16;
            $type [1] ["val"] += .15;
            $type [2] ["val"] += .19;
            $type [3] ["val"] += .20;
            $type [4] ["val"] += .19;
            $type [5] ["val"] += .16;
            $type [6] ["val"] += .16;
            $type [7] ["val"] += .19;
        }

        // loop and count value Entered for Results outcome
        $maxVal = $type [0];
        for($i = 1; $i < count ( $type ); $i ++) {
            if ($type [$i] ["val"] > $maxVal ["val"]) {
                $maxVal = $type [$i];
            }
        }

        echo "<h3> Du bist " . $maxVal ["title"] . " </h3>";

    }
    ?>

Hey are you sure that your code should need to have these lines

if ($arrEx >= 600 && $arrEx <= 800) {
            $type [0] ["val"] += 1;
            $type [1] ["val"] += 1;
            $type [2] ["val"] += 1;
            $type [3] ["val"] += 1;
            $type [4] ["val"] += 1;
            $type [5] ["val"] += 1;
            $type [6] ["val"] += 1;
            $type [7] ["val"] += 1;
        }
        if ($arrEx >= 900 && $arrEx <= 1000) {
            $type [0] ["val"] += 1;
            $type [1] ["val"] += 1;
            $type [2] ["val"] += 1;
            $type [3] ["val"] += 1;
            $type [4] ["val"] += 1;
            $type [5] ["val"] += 1;
            $type [6] ["val"] += 1;
            $type [7] ["val"] += 1;
        }
        if ($arrEx >= 1500 && $arrEx <= 3000) {
            $type [0] ["val"] += 1;
            $type [1] ["val"] += 1;
            $type [2] ["val"] += 1;
            $type [3] ["val"] += 1;
            $type [4] ["val"] += 1;
            $type [5] ["val"] += 1;
            $type [6] ["val"] += 1;
            $type [7] ["val"] += 1;
        }

you can store your ranges into array example Lower = {600, 900, 1500} and High = {800, 1000, 3000} and one 2D array which contain delta/increment which you need to increase now iterate loop and check on which index of array arrEx lie and update your type array's values i hope you understand (Sorry for my poor english).

EDITED--------------

I was saying is that suppose you have 2 one dimensional array $Lower = {L1, L2, L3.. Ln} and $High = {H1, H2, H3....Hn} and one 2 dimensional array $increment = {{0_val_increment_value, 1_val_increment_value,,,,,7.}, ...... n times} now code will be

foreach ( $exp as $key => $arrE ) {
        $arrEx = $arrE;
        Loop: iterate n times using i {
                  low = $Lower[i] , high = $High[i]
                  IF arrEx lies in range THEN
                         Loop: iterate 8 times using j {
                                         $type[j]["val"] += increment[i][j] 
                        }
                   END IF
           }
   }

Above is pseudocode i think its easy to convert in php code :)

Use switch case instead of so many else if statements

http://www.w3schools.com/php/php_switch.asp

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM