Autor Zpráva
sparky
Profil *
Zdravím, mám vytvořeného krokového průvodce, v každém kroku zvolím jednu variantu. Na konci mám zvolené 4 možnosti (pohlaví, věk, výška, váha). Podle těchto 4 variant bych chtěl vybrat jednu variantu produktu. Mám několik variant produktu a varianta by se měla vybírat podle zvolených možností. Takže např. muž, věk 20-25, výška 170-180cm nebo nad 190 cm, váha pod 70kg nebo nad 90kg... varianty mám předem definované -> jaká kombinace možností dává určitou variantu. A chtěl bych se zeptat, jak elegantně vygenerovat ze zadaných možností danou variantu.

Zatím mě napadlo vypisovat to přes if, každou možnost varianty zvlášť, ale to bych mě hodně "ifů" a přijde mi to takové neefektivní:

if($pohlavi == 'Žena' AND $vaha == 'pod 70 kg'){
        $varianta = 'A';
        return $varianta;
}
if($pohlavi == 'Žena' AND $vaha == '70 - 100 kg' AND $vek == '20-25'){
        $varianta = 'A';
        return $varianta;
}
if($pohlavi == 'Žena' AND $vaha == '70 - 100 kg' AND $vek == '30-35'){
        $varianta = 'A';
        return $varianta;
}
Tomášeek
Profil
sparky:
Podmínky se dají zanořovat, bude to přehlednější. Jinak moc možností není, tady ani switch nepomůže přehlednosti.

if ($pohlavi === 'zena') {
    if ($vaha === '') {
        if ($vek === '') {}
    } elseif ($vaha === '') {
        // zase vek
    }
} else {
    // muz
}

Podle počtu podmínek se dá řešit pořadí a úroveň zanoření, co bude přehlednější (jestli začít muž/žena, nebo třeba věkem).
T-fon
Profil
Pokud je ten věk po 5 letech, tak jako poslední dát switch by to trochu zpřehlednilo, ne?
zrnecx
Profil
Např.:
// [pohlavi][vek][vaha]    
$varianty = [
    "Žena"=>[          
        "20-25"=>[
            "0-69"=>"VariantaA"
            "70-100"=>"VariantaA"
            "101-150"=>"VariantaB"
       ],
        "26-39"=>[
            "0-69"=>"VariantaB"
            "70-100"=>"VariantaB"
            "101-150"=>"VariantaC"
       ]  
    ], 
    "Muž"=>[        
        "20-25"=>[
            "0-69"=>"VariantaA"
            "70-100"=>"VariantaB"
            "101-150"=>"VariantaB"
       ],
        "26-39"=>[
            "0-69"=>"VariantaB"
            "70-100"=>"VariantaC"
            "101-150"=>"VariantaC"
       ]
    ]
];


Nasledne tohle:
 
$Pohlavi = "Žena";
$Věk = "20-25";
$Vaha = "70-100";

if(isset($varianty[$Pohlavi][$Věk][$Vaha]))
{
  $Varianta = $varianty[$Pohlavi][$Věk][$Vaha]; 
  //Tohle vrati text "VariantaA"
}
else
{
  die("zadana kombinace neexistuje");
}

    
    

Teda příjde mi to lepší než 40 tisíc ifů :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0