Wie Schleife benutzen?

Arndtinho

Erfahrenes Mitglied
Hallo,

ich mache eine DB-Suche für eine bestimmte Bedingung. Wenn der entsprechende Datensatz gefunden wurde werden neue Bedingungen geprüft. Das ganze mache ich mit switch() und sieht so aus:
PHP:
switch($wqty) {
    case 'A':
        if ($stock_a == 0);
            echo "Alles leer";
    break;

    case 'B':
        if ($stock_b == 0);
            echo "Leer";
    break;

    case 'C':
        if ($stock_c == 0);
            echo "Leer";
    break;
}
$wqty kann entweder A, B oder C sein (wird vorher geprüft)
Nehmen wir an der DS gehört zu case 'C'. Dann soll jetzt $wqty auf 'B' gesetzt und dann case 'B' geprüft werden. Ist diese Bedingung auch 'leer' dann soll $wqty auf 'A' gesetzt und case 'A' geprüft werden.
Geht das mit einer Schleife irgendwie zu machen und wenn ja, wie?
PHP:
switch($wqty) {
    case 'A':
        if ($stock_a == 0);
            echo "Alles leer";
    break;

    case 'B':
        if ($stock_b == 0);
            $wqty = 'A';
    break;

    case 'C':
        if ($stock_c == 0);
            $wqty = 'B';
    break;
}

Gruß,
Arndtinho
 
Du könntest das z.B. mit einer rekursiven Funktion machen. Du macht eine Funktion und übergibst immer der Wert der der DS hat. Ist der jetzt z.B. leer dann ruftst du die Funktion wieder auf.


z.B. so:

PHP:
function bla($i) {
   if ($i != "leer") return 'ist leer';
   else bla($i+1);
}
 
Ich kapier das mit der Rekursion nicht. Zumindest nicht wie ich das auf mein Problem anwenden kann. Wie man eine Fakultät einer Zahl berechnet, denke ich verstanden zu haben.

Gruß,
Arndtinho
 
In etwa so:

PHP:
function bla($wqty, $stock_a, $stock_b, $stock_c) {
  switch($wqty) { 
      case 'A': 
          if ($stock_a == 0); 
              return "Alles leer"; 
          else return "";
      break; 

      case 'B': 
          if ($stock_b == 0); 
              bla( 'A', $stock_a, $stock_b, $stock_c); 
          else return "";
      break; 

      case 'C': 
          if ($stock_c == 0); 
              bla( 'B', $stock_a, $stock_b, $stock_c); 
          else return "";
      break; 
}
 
Danke, werde ich mal testen. Sowas in der Art hatte ich vorhin auch schon mal, aber es hat nicht funktioniert.

Gruß,
Arndtinho
 
Zurück