Sortierung(Array) Anregungen

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

  • Sortierung(Array) Anregungen

    Erstmal einen guten Morgen, gehört sich ja so.

    So kommen wir dann auch gleich zu meinem Problem? sofern es denn eins ist.

    Folgendes bsp. Array ist gegeben.
    PHP-Code:
    array(5) {
      [
    0]=>
      array(
    3) {
        [
    "cl_id"]=>
        
    string(1"1"
        
    ["cl_name_id"]=>
        
    string(1"0"
        
    ["cl_id_parent"]=>
        
    string(1"1"
      
    }
      [
    1]=>
      array(
    3) {
        [
    "cl_id"]=>
        
    string(1"2"
        
    ["cl_name_id"]=>
        
    string(1"1"
        
    ["cl_id_parent"]=>
        
    string(1"1"
      
    }
      [
    2]=>
      array(
    3) {
        [
    "cl_id"]=>
        
    string(1"3"
        
    ["cl_name_id"]=>
        
    string(1"2"
        
    ["cl_id_parent"]=>
        
    string(1"3"
      
    }
      [
    3]=>
      array(
    3) {
        [
    "cl_id"]=>
        
    string(1"4"
        
    ["cl_name_id"]=>
        
    string(1"3"
        
    ["cl_id_parent"]=>
        
    string(1"1"
      
    }
      [
    4]=>
      array(
    3) {
        [
    "cl_id"]=>
        
    string(1"5"
        
    ["cl_name_id"]=>
        
    string(1"4"
        
    ["cl_id_parent"]=>
        
    string(1"2"
      
    }

    Dieses Array soll nun so Sortiert werden.
    cl_id=1 und cl_id_parent=1 ist und soll auch das erste Array element bleiben.
    diesem sollen dann alle cl_id_parent=1 zugeordnet werden. zudem muss ich dann schauen welche cl_id auch wieder ein parent element besitzt und diesem zuornden.
    Elemente wo cl_id und cl_id_parent gleich sind sind elemente der ersten ordnung.

    so das ein baum entsteht.

    Leider versuch ich schon seit 2 Tagen mein problem selbst zu lösen. Scheitere aber daran das entweder die elemente dupliziert oder verschluckt werden.

    Deswegen frage ich euch.

    Wie bekomme ich das so sortiert?
    ein multidimensionales array kann ruhig entstehen.
    Bitte Beachten.
    Foren-Regeln
    Danke

  • #2
    Ich weiß nicht woran es scheitert, aber das sollte eigentlich hinzubekommen sein, wenn du mit Bäumen vertraut bist!

    Vielleicht kannst du ja so ähnlich arbeiten:
    PHP-Code:
    // Referenztabelle für Direktzugriff auf Knoten
    // Speichert unter der ID des Knoten den Index im nodes-Array
    $rettable = array();
    // Der Baum
    $tree = array();

    foreach( 
    $nodes as $key=>$node ) {
       
    // kein Kindknoten!
       
    if( $node['cl_id']==$node['cl_id_parent'] ) {
          
    $reftable[$node['cl_id']] = $key;
          
    $tree[] = &$node;
       }
       
    // Ist Kindknoten
       
    else {
          
    $reftable[$node['cl_id']] = $key;
          
    $index $reftable[$node['cl_id']];
          
    // hat noch keine Kinder
          
    if( !isset( $nodes[$index]['children'] ) ) {
             
    $nodes[$index]['children'] = array();
          }
          
    $nodes[$index]['children'][] = &$node;
       }

    Ich gebe dir aber keinerlei Garantie, dass das so klappt. Ist ungetestet und ich bin mir jetzt auch nicht sicher, ob PHP das mit den Referenzen hinbekommt!

    Kommentar


    • #3
      Danke. Das hilft weiter.

      Ich werd das in Ruhe ausprobieren. Vieleicht denke ich auch einfach nur zu engstirnig und komm deswegen nicht auf die Lösung.
      Aber das wird.
      Bitte Beachten.
      Foren-Regeln
      Danke

      Kommentar

      Lädt...
      X