Assoziative Arrays nach Max sortieren?

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

  • Assoziative Arrays nach Max sortieren?

    Hi,

    gibt es eine Möglichkeit ein assoziatives Array nach dem Maxwert zu sortieren?
    Ich kann das nicht über die DB machen, da ich die Abfrage mehrere tausend Mal machen müsste, und ich in einem früheren Posting schon gesehen habe, dass dadurch die Scriptzeit massiv in die Höhe schnellt.

    bei einem normalen Array kann man ja mit:

    PHP-Code:
    $maxW max($ergebnis['Wert']); 
    den Wert herausbekommen. Nur wie machen ich das wenn ich:

    PHP-Code:
    ergebnis[$Zaehler]['Wert']; 
    habe? Ich habe in der Suche einen Link zu einem ähnlichen Posting gefunden, wo ein Hinweis auf 'multi_sort' war, den ich aber nicht ganz nachvollziehen konnte.

    Thx
    Grüße
    cu LaHood

  • #2
    Schau mal hier nach http://www.php.net/manual/de/ref.array.php
    mfg
    Günni


    Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
    Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
    Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
    City-Tiger - Online durch die Straßen tigern...

    Kommentar


    • #3
      hmm funkt net:

      PHP-Code:
      ksort ($ergebnis['Close']);
      reset ($ergebnis['Close']);
      while (list (
      $key$val) = each ($ergebnis['Close'])) {
          echo 
      "$key = $val\n";

      Bekomme dort eine Fehlermeldung.
      Warning: Wrong datatype in ksort() call in c:\apache\htdocs\test\firststep.php on line 96

      Ich denke mal das liegt daran dass es $ergebnis['Close'] garnicht gibt, sondern nur $ergebnis[$zaehler]['Close']



      Grüße
      cu LaHood

      Kommentar


      • #4
        Wenn es dies ja nicht gibt, dann kann er dies j auch nicht sortieren.
        mfg
        Günni


        Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
        Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
        Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
        City-Tiger - Online durch die Straßen tigern...

        Kommentar


        • #5
          hmm aber das hier macht doch auch keinen Sinn :

          PHP-Code:
          ksort_($ergebnis[$zaehler]['Close']);

          reset_($ergebnis[$zaehler]['Close']);

          while_(list_($key,_$val)_=_each_($ergebnis[$zaehler]['Close']))_{

          ____echo_"$key_=_$val\n";


          Denn wenn $zaehler einen bestimmten Wert hat bekomme ich als Ergebnis ja auch nur einen einzigen Wert zurück. Dann brauch ich auch nix mehr sortieren


          Ich muss aber wissen welchen höchsten Wert es von $ergebnis[$anfang]['Close'] bis $ergebnis[$ende]['Close'] gibt.

          Kommentar


          • #6
            Dann musst du in einer Schleife jeden wert durchgehen. Wenn der Wert höher ist als der alte, speichere diesen dann als neuen höchsten wert...
            mfg
            Günni


            Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
            Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
            Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
            City-Tiger - Online durch die Straßen tigern...

            Kommentar


            • #7
              Hier ein kleines Beispiel:
              PHP-Code:
              <?
                  $werte = array(1,3,48,891,718,892,17,2,74,89,48,99,1000);
                  $max = 0;
                  
                  for($i=0;$i<count($werte);$i++)
                  {
                      if($werte[$i] > $max) $max = $werte[$i];
                  }
                  
                  echo "Größter Wert ist: $max";

              ?>
              oder
              max -- Maximalwert bestimmen

              Beschreibung

              mixed max ( mixed arg1, mixed arg2, mixed argn)


              max() liefert den numerisch größten Eingabewert zurück.

              Ist der erste Parameter ein Array, so wird der größte Wert innerhalb dieses Array zurückgegeben. Anderenfalls müssen mindestens zwei Parameter übergeben werden, und max() liefert den Wert des größten Parameters zurück. Die Anzahl der Eingabe-Parameter ist nur durch den verfügbaren Hauptspeicher begrenzt.

              Ist mindestens einer der Eingabewerte vom Typ double, so werden alle Werte als double behandelt und der Rückgabewert ist ebenfalls vom Typ double. Anderenfalls werden alle Eingabewerte als int behandelt und auch ein int zurückgegeben.
              Zuletzt geändert von Günni; 06.03.2003, 02:01.
              mfg
              Günni


              Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
              Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
              Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
              City-Tiger - Online durch die Straßen tigern...

              Kommentar


              • #8
                ok dein Scriptbeispiel sollte den Maxwert liefern.

                PHP-Code:
                <?

                ___

                ____$max_=_0;

                ____

                ____for($i=0;$i<count($row);$i++)

                ____{

                ________if($$ergebnis[$i]['Close']_>_$max)_$max_=_$ergebnis[$i]['Close'];

                ____}

                ____

                ____echo_"Größter_Wert_ist:_$max";

                ?>
                Allerdings scheint es mir so dass ich die max() Funktion nicht auf das Array anwenden kann, da mein Array nicht so:

                PHP-Code:
                $werte_=_array(1,3,48,891,718,892,17,2,74,89,48,99,1000); 
                sondern so aussieht:
                PHP-Code:
                $ergebnis[$i]['Close'
                Naja ich werde das mit der Schleife erstmal machen

                Grüße
                cu LaHood

                Kommentar

                Lädt...
                X