Timo: Array Referenzen Nodes

Hallo,

<?php

$inputArray[] = array('1', 'parentID' => 0, 'title' => 'Element1' );
$inputArray[] = array('2', 'parentID' => 1, 'title' => 'Element2' );
$inputArray[] = array('3', 'parentID' => 2, 'title' => 'Element3' );
$inputArray[] = array('4', 'parentID' => 2, 'title' => 'Element4' );
$inputArray[] = array('5', 'parentID' => 3, 'title' => 'Element5' );
$inputArray[] = array('6', 'parentID' => 3, 'title' => 'Element6' );

$outputArray = array();
$nodeRefs = array(0 => &$outputArray);

foreach ($inputArray as $element) {
    $parent = &$nodeRefs[$element['parentID']];
    $parent[$element[0]] = array('title' => $element['title']);
    $nodeRefs[$element[0]] = &$parent[$element[0]];
}

print_r($outputArray);

?>

Das Script funktioniert soweit. Nur wenn das Inhaltsarray keine ID hat weiss ich nicht weiter mit der Schleife.

$inputArray[] = array('parentID' => 0, 'title' => 'Element1' );
$inputArray[] = array('parentID' => 1, 'title' => 'Element2' );
$inputArray[] = array('parentID' => 2, 'title' => 'Element3' );
$inputArray[] = array('parentID' => 2, 'title' => 'Element4' );
$inputArray[] = array('parentID' => 3, 'title' => 'Element5' );
$inputArray[] = array('parentID' => 3, 'title' => 'Element6' );

Timo

  1. hi,

    Das Script funktioniert soweit. Nur wenn das Inhaltsarray keine ID hat weiss ich nicht weiter mit der Schleife.

    Wenn das deine "Problembeschreibung" ist, wissen wir nicht weiter mit was du wolle.
    </hilfe/charta.htm#tipps-fuer-fragende>

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hi,

      Wenn das deine "Problembeschreibung" ist, wissen wir nicht weiter mit was du wolle.

      Was gibt es denn daran nicht zu verstehen?
      Ausführlicher hätte ich es doch wohl kaum machen können.

      Bei der Struktur des 1. Arrays Funktioniert die Schleife in der Form, dass eine hierarchische Ordnung entsteht. Aber nur deshalb weil
      die Contentarray eine ID besitzen. Ohne ID gehts nicht, also muss der Ablauf umgestellt werden innerhalb der foreach. Nur wie? Das ist die Frage.

      Timo

      1. hi,

        Was gibt es denn daran nicht zu verstehen?

        Was gibt es daran nicht zu verstehen, dass hingerotzter Code, ohne jegliche Erklärung, was der eigentlich bewirken soll, kaum als Problembeschreibung taugt?

        Ausführlicher hätte ich es doch wohl kaum machen können.

        Ha ha.

        Bei der Struktur des 1. Arrays Funktioniert die Schleife in der Form, dass eine hierarchische Ordnung entsteht. Aber nur deshalb weil
        die Contentarray eine ID besitzen.

        Ach ja - wo denn?

        Ohne ID gehts nicht, also muss der Ablauf umgestellt werden innerhalb der foreach. Nur wie?

        Das wäre zunächst mal von dir zu definieren.

        Das ist die Frage.

        Ja, immer noch.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Das ist die Frage.

          Ja, immer noch.

          Ist ja nicht schlimm, vielleicht hat ein Anderer hier eine höhere Auffassungsgabe. Danke für deine Bemühung.

          Timo

          1. echo $begrüßung;

            Ist ja nicht schlimm, vielleicht hat ein Anderer hier eine höhere Auffassungsgabe. Danke für deine Bemühung.

            Auffasungsgabe wird bei deiner Rätselaufgabe weniger benötigt, eher detektivische Fähigkeiten.

            Zitat Ausgangsposting:

            Nur wenn das Inhaltsarray keine ID hat weiss ich nicht weiter mit der Schleife.

            Welches Inhaltsarray? Meinst du damit vielleicht das Array namens $inputArray? Was meinst du mit ID? Das einzige zu sehende ID ist in $parentID. Der Unterschied zwischen deinen beiden $inputArray-Varianten ist ein Wert, der, automatisch vergeben, den Schlüssel 0 bekommt. Ist das deine ID?
            Vielleicht bringt es dich auf eine Lösungsidee, wenn du dir dein $inputArray mal mit print_r() ausgibst *) sowie foreachs zweite Variante anschaust.

            *) ein <pre> vorher erhöht die Übersichtlichkeit, wenn die Ausgabe im HTML-Kontext erfolgt.

            echo "$verabschiedung $name";

            1. Hallo,

              Auffasungsgabe wird bei deiner Rätselaufgabe weniger benötigt, eher detektivische Fähigkeiten.

              »»

              hmmm, ein einfaches copy&paste ausprobieren hätte das leicht erklärt, aber na ja.

              Zitat Ausgangsposting:

              Nur wenn das Inhaltsarray keine ID hat weiss ich nicht weiter mit der Schleife.

              Welches Inhaltsarray? Meinst du damit vielleicht das Array namens $inputArray? Was meinst du mit ID? Das einzige zu sehende ID ist in $parentID. Der Unterschied zwischen deinen beiden $inputArray-Varianten ist ein Wert, der, automatisch vergeben, den Schlüssel 0 bekommt. Ist das deine ID?

              Nein, das ist nicht der Unterschied.

              Hier hat das eigentliche Array 3 Werte: ID, parentID,title
              $inputArray[] = array('1', 'parentID' => 0, 'title' => 'Element1' );

              Hier nur 2: parentID, title
              $inputArray[] = array('parentID' => 0, 'title' => 'Element1' );

              Das ist der Unterschied!

              *) ein <pre> vorher erhöht die Übersichtlichkeit, wenn die Ausgabe im HTML-Kontext erfolgt.

              Quelltext anzeigen geht auch.

              Timo