Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit Funktion

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit Funktion

    Ich hätt mal wieder ein Problem
    und zwar folgendes:

    ich habe einen array der folgendermaßen ausschaut:
    PHP-Code:
    $test2=array(     array(1,102,-123,4,5),
                array(
    6,7,8,99,10),
                array(-
    1,12,13,14,15),); 
    und eine rekursive funktion geschrieben die folgendermaßen ausschaut
    (soll den minimal und den maximal wert des mehrdimensionalen arrays ermitteln):
    PHP-Code:
    function minmax($array,&$min,&$max)
        {
                for(
    $i=0;$i<count($array);$i++)
                {
                
    $max2=max($array[$i]);        
                if (
    $max<$max2){$max=$max2;}else{$max=$max;}
                    
                
    $min2=min($array[$i]);
                if (
    $min>$min2){$min=$min2;}else{$min=$min;}    
                
                }
            echo 
    "min:"$min .
    max:"
    .$max;
        };
        
    echo 
    minmax($test2,$min,$max); 
    die Maximalzahl lässt sich ermitteln jedoch nicht die minzahl, bzw die variable wird nicht "mitgenommen" .

    wäre sehr froh wenn mir jemand sagen könnte, was ich falsch gemacht habe.

    gruß, Flyingfox

  • #2
    Wo ist da was rekursiv? Besonders gut gefällt mir else{$max=$max;} das macht Sinn.
    Anders ausgedrückt, dein Funktion ist Schrott und bedarf einer Generalüberholung.

    Gruß
    phpfan

    Kommentar


    • #3
      ok dann hab ich da was verwechselt... ich meinte, dass das vorherige ergebnis gespeichert wird und dann wieder verwendet werden kann.

      das else ist wirklich sinnlos das stimmt

      wie würdet ihr sowas erstellen? damit es die vorgegangenen ergebnisse von array ebene 0 "weiternimmt" um es zu vergleichen mit der aktuellen ebene des arrays?

      Kommentar


      • #4
        Da ist eine Rekursion überhaupt nicht nötig.
        PHP-Code:
        <?
          $test2=array(array(1,102,-123,4,5), 
                       array(6,7,8,99,10), 
                       array(-1,12,13,14,15)); 

          function minmax($array,&$min,&$max) 
          {
             $mx = array();
             $mn = array();

             foreach ($array as $ar)
             {
                  $mx[] = max($ar);
                  $mn[] = min($ar);
             }     
             
             $max = max($mx);
             $min = min($mn);     
          } 
             
          minmax($test2,$min,$max); 

          echo "Min = $min, Max = $max";
        ?>
        Gruß
        phpfan

        Kommentar


        • #5
          Re: Problem mit Funktion

          Zitat von Flyingfox
          PHP-Code:
          <?php
          function minmax($array,&$min,&$max)
              {
                      for(
          $i=0;$i<count($array);$i++)
                      {
                      
          $max2=max($array[$i]);        
                      if (
          $max<$max2){$max=$max2;}else{$max=$max;}
                          
                      
          $min2=min($array[$i]);
                      if (
          $min>$min2){$min=$min2;}else{$min=$min;}    
                      
                      }
                  echo 
          "min:"$min .
          max:"
          .$max;
              };
              
          echo 
          minmax($test2,$min,$max);
          ?>
          - Was soll das echo minmax() bewirken? Die Funktion hat keinen Rückgabewert, also wird auch nix ausgegeben.
          - Bevor Du das bisherige Minimum bzw. Maximum mit dem neuen vergleichen willst, solltest Du mal sinnvolle Initialisierungswerte verwenden. Womit soll denn am Anfang verglichen werden?

          Zitat von phpfan
          Besonders gut gefällt mir else{$max=$max;} das macht Sinn.
          Hehe. Nett.
          Über die Sinnlosigkeit des Codes lästern und dabei sinnlose Sätze bilden. Sinn kann etwas haben, aber nicht machen.

          Kommentar

          Lädt...
          X