Hugo Zeiss: Funktion in einer Funktion ?!?!?

Guten morgen liebes Forum,

ich möchte in einer Funktion (datum_check) eine
Funktion (datum_format) aufrufen und den jeweiligen
Inhalt freigeben lassen.
CODE:
------

function datum_format($tag,$monat,$jahr) {
 if(strlen($tag[$i]) == 1) {
  $tag[$i] = "0".$tag[$i];
 }
 if(strlen($monat[$i]) == 1) {
  $tag[$i] = "0".$tag[$i];
 }
 if(strlen($jahr[$i]) == 1) {
  $tag[$i] = "0".$tag[$i];
 }
 $datum[$i] = $tag[$i]."-".$monat[$i]."-".$jahr[$i];
 return $datum[$i];
}

function datum_check($tag,$monat,$jahr) {
 for ($i=0;$i<2;$i++) {
  datum_format($tag,$monat,$jahr); <- hier scheitert es
  if(!checkdate($monat[$i],$tag[$i],$jahr[$i])) {
   echo "Fehler: ".$datum[$i]." ist nicht richtig<br>";
  }
  else {
   echo "Datum: ".$datum[$i]." ist ok<br>";
  }
 }
}

Es wird kein Fehler ausgegeben. Es erscheint keine $datum[$i]
Ausgabe. Wenn ich allerdings hingehe und den gesamten Inhalt
von datum_format ausschneide (bis auf return-Zeile) und
anstelle des Funktionsaufrufs in datum_check einfüge, bekomme
ich die gewünschte Ausgabe.

Wo liegt der Fehler?

Danke für Eure Hilfe
Hugo

  1. Hallo Hugo,

    wenn Du eine Funktion aufbaust

    $ckeck($wert)
      {
        $wert=$wert+1;  ### oder auch $wert+=1;
        #...            ### oder was auch immer
        return $wert;
      }

    dann musst Du nachreher beim Aufruf der Funktion das Funktionsergebnis auch entgegennehmen:

    $ergebnis = $check(30);

    echo $ergebins;

    Bau das mal in Deine geschachtelte Funktion ein:

    ich möchte in einer Funktion (datum_check) eine
    Funktion (datum_format) aufrufen und den jeweiligen
    Inhalt freigeben lassen.
    CODE:

    function datum_format($tag,$monat,$jahr) {
     if(strlen($tag[$i]) == 1) {
      $tag[$i] = "0".$tag[$i];
     }
     if(strlen($monat[$i]) == 1) {
      $tag[$i] = "0".$tag[$i];
     }
     if(strlen($jahr[$i]) == 1) {
      $tag[$i] = "0".$tag[$i];
     }
     $datum[$i] = $tag[$i]."-".$monat[$i]."-".$jahr[$i];
     return $datum[$i];
    }

    function datum_check($tag,$monat,$jahr) {
     for ($i=0;$i<2;$i++) {
      datum_format($tag,$monat,$jahr); ### <- hier einbauen

    ##   $datum = datum_format($tag,$monat,$jahr);
    ##   dann funktionierts...

    if(!checkdate($monat[$i],$tag[$i],$jahr[$i])) {
       echo "Fehler: ".$datum[$i]." ist nicht richtig<br>";
      }
      else {
       echo "Datum: ".$datum[$i]." ist ok<br>";
      }
     }
    }

    Grüße

    Tom