usort - Sortieren mehrdimensionaler Arrays

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

  • usort - Sortieren mehrdimensionaler Arrays

    PHP-Code:
    public function sort ($key 'nachname'){
        
            function 
    compare ($x$y){
                global 
    $key;
                if (
    $x [$key] == $y [$key])
                    return 
    0;
                else if (
    $x [$key] < $y [$key])
                    return -
    1;
                else
                    return 
    1;
            }
            
    error_reporting(E_ALL);
            
    usort ($this->DataList'compare');
    }

    // Gibt einen Fehler aus
    // Notice: Undefined index: in D:\..\sort.php on line 156 
    Könnte mir jmd. sagen was da falsch ist? und wie ich's richtig machen müsste, dass der Index, der an die Funktion "sort" übergeben wird auch in der Funktion Compare zur verfügung steht?


    Vielen Dank!!!

  • #2
    PHP-Code:
    public function sort ($key 'nachname'){
            
    $GLOBALS['key'] = $key;  // <---
            
    function compare ($x$y){
                global 
    $key;
                if (
    $x [$key] == $y [$key])
                    return 
    0;
                else if (
    $x [$key] < $y [$key])
                    return -
    1;
                else
                    return 
    1;
            }
            
    error_reporting(E_ALL);
            
    usort ($this->DataList'compare');

    Was du da vor hast, ist aber nicht sehr sauber. Besser wäre, eine Klasse mit entsprechender Methode zu erstellen und dieser Klasse einen $key-Member zu geben.

    Kommentar


    • #3
      Erst mal Danke .

      Was du da vor hast, ist aber nicht sehr sauber. Besser wäre, eine Klasse mit entsprechender Methode zu erstellen und dieser Klasse einen $key-Member zu geben.
      --> Meine Klasse ist eine Liste und ich dachte mir eben noch eine Methode einzubauen die diese sortiert. Meinst du mit "key-Member" ein Attribut?

      Kommentar


      • #4
        --> Meine Klasse ist eine Liste und ich dachte mir eben noch eine Methode einzubauen die diese sortiert. Meinst du mit "key-Member" ein Attribut?
        Jep, damit kannst du auf diese hässliche globale Variable verzichten.

        Kommentar


        • #5
          Original geschrieben von PHP-Desaster
          Jep, damit kannst du auf diese hässliche globale Variable verzichten.
          Und auf die Funktion auch, weil strcmp() schon existiert.
          Gruss
          H2O

          Kommentar


          • #6
            Thx - POST beendet

            Kommentar


            • #7
              Und auf die Funktion auch, weil strcmp() schon existiert.
              Naja, ganz kann die Funktion nicht wegfallen, strcmp erwartet einen String, darum muss da noch eine Methode zwischengeschaltet werden.

              Kommentar


              • #8
                Original geschrieben von PHP-Desaster
                Naja, ganz kann die Funktion nicht wegfallen, strcmp erwartet einen String, darum muss da noch eine Methode zwischengeschaltet werden.
                Da hast du natürlich recht wie immer oder so. Es wird ja ein array übergeben, und nicht ein einzelnes Element. Darum:
                PHP-Code:
                function compare ($x$y){
                    return(
                strcmp($x[$key], $y[$key]));

                Das wäre ja auch vorher schon gegangen
                Gruss
                H2O

                Kommentar

                Lädt...
                X