Sortierfunktion hat einen Fehler!

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

  • Sortierfunktion hat einen Fehler!

    Hi Leute,

    ich habe bestimmt ein total einfaches Problem, finde aber selbst den Fehler nicht! Ich habe ein Multidimensionales Array was ich sortieren lassen will mit dieser Funktion:
    function negativ($b, $a)
    {return strnatcmp($a[$_GET['sort']], $b[$_GET['sort']]);}

    function positiv($a, $b)
    {return strnatcmp($a[$_GET['sort']], $b[$_GET['sort']]);}
    Das funktioniert auch wunderbar, bis auf eine einzige Sache wenn dort negative Zahlen dabei sind! Dann sortiert er das immer so:
    12
    6
    3
    -10
    -5

    Ich möchte natürlich das es so aussieht:
    12
    6
    3
    -5
    -10

    Was mache ich falsch?

    Danke Voraus, für Eure Mühe!

    Mit freundlichen Grüßen
    Marco Schrepffer

  • #2
    Re: Sortierfunktion hat einen Fehler!

    Original geschrieben von Plutarch
    Was mache ich falsch?
    Das du keine [PHP]-Tags verwendest!
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

    Kommentar


    • #3
      Du baust einfach ein If ein indem du positive von negativen Zahlen trennst.
      Und dann die positiven und die negativen Werte einzelnd sotieren lässt.


      MfG
      Bauer

      Kommentar


      • #4
        Danke werde es gleich mal versuchen!

        Kommentar


        • #5
          Warum benutzt du nicht < und >?
          Du vergleichst doch nur Zahlen, oder?
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            ich bekomm das einfach nicht hin! Irgendwie macht er die Sortierung bei mir immer Fehlerhaft, ich habe das Ganze jetzt so umgeschrieben!

            if ($a[$_GET['sort']] < 0 && $b[$_GET['sort']] < 0)
            {
            return strnatcmp($a[$_GET['sort']], $b[$_GET['sort']]);
            }
            elseif ($a[$_GET['sort']] > 0 && $b[$_GET['sort']] > 0)
            {
            return strnatcmp($b[$_GET['sort']], $a[$_GET['sort']]);
            }
            elseif ($a[$_GET['sort']] < 0 && $b[$_GET['sort']] > 0)
            {
            return strnatcmp($a[$_GET['sort']], $b[$_GET['sort']]);
            }
            elseif ($a[$_GET['sort']] > 0 && $b[$_GET['sort']] < 0)
            {
            return strnatcmp($a[$_GET['sort']], $b[$_GET['sort']]);
            }
            Aber es geht immer noch nicht richtig!
            Er macht jetzt alles richtig nur falsch rum also;
            -3
            -6
            -10
            +10
            +6
            +3

            ich möchte baer natürlich:
            +10
            +6
            +3
            -3
            -6
            -10

            ich sehe einfach meinen fehler nicht

            mit freundlichen Grüßen
            Marco Schrepffer

            Kommentar


            • #7
              hab es hinbekommen, war ein einfacher Fehler (falsche Schreibweise) jetzt geht es wunderbar!

              Danke für Eure Hilfe

              Kommentar


              • #8
                Original geschrieben von Plutarch
                ich habe das Ganze jetzt so umgeschrieben!
                Willst du wirklich nur Zahlwerte vergleichen?

                Wenn ja, dann verstehe ich nicht, warum du so einen Aufwand betreibst ...

                Es würde doch vollkommen ausreichen, wenn die Vergleichsfunktion einfach die Differenz der beiden Werte zurückgibt.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar

                Lädt...
                X