Ankündigung

Einklappen
Keine Ankündigung bisher.

Mehrdimensionalen Array filtern und sortieren

Einklappen

Neue Werbung 2019

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

  • Mehrdimensionalen Array filtern und sortieren

    Hallo PHP Freunde,

    ich versuche gerade einen mehrdimensionalen Array zu filtern, dann zu sortieren und als neuen Array auszugeben. Wenn ich ehrlich bin klappt das im Moment nicht wirklich

    Ich habe folgende schleife mit einem array aus Datenbankinhalten inkl. "Unterarray":

    PHP-Code:
    $cat[] = array ("parent_id" => $row[parent_id], "name" => $row[name], "anzahl" => $row[count], "cat" => array ("cat_id" => $row[cat_id], "cat_name" => $row[cat_nam])
    ); 
    Das Ziel ist eine Baumstruktur für eine Suche. So etwas:

    1.

    Action 8
    - DVD 2
    - Blue Ray 6

    Komödie 3
    - DVD 3

    Ich bekomme aber das so nicht hin, wenn es mehrere Ergebnisse in der Oberkategorie gibt. Ich möchte auch nicht eine extra Abfrage für die Unterkategorien ausfühgren, was natürlich auch geht, aber dementsprechend pro Unterkategorie eine Abfrage ausführt.

    Im Moment erhalte ich folgendes:

    2.

    Action 2
    - DVD 2

    Action 6
    - Blue Ray 6

    Komödie 3
    - DVD 3

    Wie kann ich "gleiche" Arrays, sprich mit der gleichen parent_id zusammenfassen, so dass es wie in 1. aussieht?
    Als Anzahl könnte man glaube ich die einzelnen Werte zählen, aber das klappt auch noch nicht.

    Ich hoffe, dass ihr mir weiterhelfen könnt.

  • #2
    Wenn ich richtig verstehe was du machen willst, würde ich das mit Nested Sets machen.
    Nested Sets – Verschachtelte Bäume mit MySQL - Arne Klempert Kannst dir das ja mal anschauen.
    "My software never has bugs, it just develops random features."
    "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

    Kommentar


    • #3
      Ui hm das würde sicher auch gehen, aber dann muss ich meine gesamte Datenbankstruktur komplett umkrempeln. Von daher würde ich lieber den vorgeschlagenen Weg gehen, also das zusammenfassen und gruppieren des Arrays an den richtigen Stellen.

      Kommentar


      • #4
        Kleiner Tipp am Rande:
        $row[parent_id]
        ist nicht valide und wirft eine Notice!

        Kommentar


        • #5
          versteh nicht was du mit valide in dem Beispiel meinst?

          Soweit habe ich es mittlerweise hinbekommen, dass der Baum richtig angezeigt wird:

          Action 2
          - DVD 2
          - Blue Ray 6

          Komödie 3
          - DVD 3

          Nur habe ich noch Probleme bei dem Count für die Oberkategorie, sofern Ergebnisse in mehr als einer Unterkategorie gefunden wurde. Wie kann ich es anstellen, dass er die Counts der Arrays, also ucat['cat_count'] der einzelnen Unterkategorien zusammenzählt und wie setze ich den dann ein, so dass er je Hauptkategorie angezeigt wird?

          So sieht das momentan aus:

          PHP-Code:
          while ($row....

          $cat[$row[parent_id]] = array ("parent_id" => $row[parent_id], "name" => $row[name], "count_all" => $row[count], "ucat" => array ()
          );

          $cat[$row['parent_id']]['ukat'][] = array(
          "cat_id" => $row[cat_id], "cat_name" => $row[cat_name], "cat_count" => $row[count]);

          Mit array-sum habe ich es noch nicht hinbekommen. Über Tipps und ein wenig Hilfe würde ich mich freuen.

          Vielen Dank im Voraus

          Kommentar


          • #6
            Na ja eine hilfreiche Community nenne ich aber etwas anderes. Sehr schade, aber da kann man sich die Frage auch gleich sparen.

            Ich habe es jetzt alleine gelöst. Danke für Nichts

            Kommentar

            Lädt...
            X