Ankündigung

Einklappen
Keine Ankündigung bisher.

Array mit Objekten sortieren

Einklappen

Neue Werbung 2019

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

  • Array mit Objekten sortieren

    Hallo zusammen,

    so recht will mir die Lösung nicht einfallen.

    ich habe ein Array folgender Art:

    PHP-Code:
    Array
    (
        [
    0] => stdClass Object
            
    (
                [
    modelName] => Name1
                
    [colorName] => color1
                
    [modelId] => 1001
                
    [mid] => 5236
                
    [cid] => 5242
                
    [lid] => 4320
            
    )

        [
    1] => stdClass Object
            
    (
                [
    modelName] => Name2
                
    [colorName] => color2
                
    [modelId] => 1002
                
    [mid] => 5236
                
    [cid] => 5242
                
    [lid] => 4320
            
    )

        [
    2] => stdClass Object
            
    (
                [
    modelName] => Name3
                
    [colorName] => color3
                
    [modelId] => 1003
                
    [mid] => 5245
                
    [cid] => 5251
                
    [lid] => 4320
            
    )

        [
    3] => stdClass Object
            
    (
                [
    modelName] => Name4
                
    [colorName] => color4
                
    [modelId] => 1004
                
    [mid] => 5245
                
    [cid] => 5251
                
    [lid] => 4320
            
    )

    Ich möchte nun gern das Array nach den Objetkvariablen sortieren.
    Also einmal nach modelName und ein anderes mal nach z.B. modelId.

    Kann mir jemand sagen, wie ich hierauf eine Sortierung anwenden kann?
    Würd mich über jeden Tipp oder Link freuen!

    Danke!

    skittles

  • #2
    Warum sind die Einträge vom Typ stdClass Object? Warum werden sie nicht schon im Vorfeld sortiert?
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #3
      Zitat von skittles Beitrag anzeigen
      Kann mir jemand sagen, wie ich hierauf eine Sortierung anwenden kann?
      Mittels usort, und selbst geschriebener kleiner Vergleichsfunktion - siehe Manual.


      Oder, wenn man die Klasse der Objekte um eine magische __toString-Methode erweitert, die dann jeweils eine der Objekteigenschaften als String zurückgibt - dann kann man danach auch über sort() & Co. sortieren lassen, wenn man explizit das Flag SORT_STRING mit angibt.
      (Die Info, wonach sortiert werden soll, könnte man bspw. als statische Eigenschaft ablegen. Und man müsste bei dem Vorgehen mit dem Nachteil leben, dass __toString ggf. auch unter anderen Umständen aufgerufen wird, und dann die blosse Rückgabe einer bestimmten Eigenschaft dort unerwünscht sein könnte.)

      Edit: Ach ja, noch ein Nachteil - jeder Vergleich wird dann auf String-Ebene durchgeführt - ungeeignet für die Sortierung nach nummerischen Werten.
      [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

      Kommentar


      • #4
        Hallo die Objekte haben den Typ stdClass Object, weil sie dynamisch einfach als DatenContainer erstellt werden.

        Warum sind sie nicht vorsortiert? Weil sie nach bestimmten Kriterien sortiert werden sollen und nicht einfach nach Schema F sortiert werden sollen und dann wird mit den Daten nichts mehr gemacht.

        Ich schau mir mal usort an, vielen dank, wie ich damit aber in einem Array, die Elemente nach deren Unterelementen sortieren mag, kann ich mir noch nicht ganz genau vorstellen.

        Aber gut, vielen Dank erstmal!

        Kommentar


        • #5
          Dann frage ich anders.
          weil sie dynamisch einfach als DatenContainer erstellt werden.
          Dynamisch erstellt wo? Warum kann dort nicht sortiert werden? Warum wird dort nicht ein ordentliches Objekt instanziiert.
          [COLOR="#F5F5FF"]--[/COLOR]
          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
          [COLOR="#F5F5FF"]
          --[/COLOR]

          Kommentar

          Lädt...
          X