phpbar.de logo

Mailinglisten-Archive

[php] if verschachteln (war: Re: isset)

[php] if verschachteln (war: Re: isset)

Guido Haeger GH-lists_(at)_ecora.de
Thu, 17 Aug 2000 08:23:24 +0200


Martin Samesch schrieb

> Ohne mir das jetzt konkret ueberlegt zu haben, koennte es bei
> einer Kombination von fuenf voneinander abhaengigen
> Fallunterscheidungen aber etwas aufwendig werden, wenn
> ich alle Kombinationen beruecksichtigen will (?).

OK ein Beispiel mit 8 aufeinander aufbauenden Datenbankabfragen:

if(DA == "a")
{
    if(DA == "b")
    {
        if(DA == "c")
        {
            if(DA == "d")
            {
                if(DA == "e")
                {
                    if{DA == "f")
                    {
                        if(DA == "g")
                        {
                            if(DA == "h")
                            {
                                // tu was
                            }
                            else
                            {
                                // Fehlerhandling "h"
                            }
                        }
                        else
                        {
                            // Fehlerhandling "g"
                        }
                    }
                    else
                    {
                        // Fehlerhandling "f"
                    }
                }
                else
                {
                    // Fehlerhandling "e"
                }
            }
            else
            {
                // Fehlerhandling "d"
            }
        }
        else
        {
            // Fehlerhandling "c"
        }
    }
    else
    {
        // Fehlerhandling "b"
    }
}
else
{
    // Fehlerhandling "a"
}

Man könnte z.B. alternativ schreiben

if(DA == "a")
{  
    $a = 1;
}
else
{
    fehler_handling("a");
}

if($a == 1)
{
    if(DA == "b")
    {
        $b = 1;
    }
    else
    {
        fehler_handling("b");
    }
}

[...]

if($g == 1)
{
    if(DA == "h")
    {
        // tu was
    }
    else
    {
        fehler_handling("c");
    }
}


Man könnte hier auch einfach
 schreiben:

$bedingungen = array("a", "b", "c", "d", "e", "f", "g", "h");
$max = count($bedingungen);
for($i = 0; $i < $max, $i++)
{
    if(DA != $bedingungen[$i])
    {
        fehlerhandling($bedingung[$i]);
        break;
    }

    if($max-1 == $i)
    {
        // tu was;
    }
}

Man könnte die einzelnen Abfragen auch in Funktionen stecken usw. Kurz:
es gibt viele Möglichkeiten unübersichtlichen, tief verschachtelten Code
zu vermeiden, ohne das sich deshalb z.B. die Anzahl der
Datenbankzugriffe erhöht.

Das Beispiel krankt insgesamt natürlich daran, daß man eine
entsprechende Logik in der Regel einfach per AND in der WHERE-Klausel
der Datenbankabfrage erschlagen würde.





php::bar PHP Wiki   -   Listenarchive