ich eine ungewöhnliche erstellt ('während Basis 'statt rekursiv) aber multidimensional Sortierfunktion, die das Array laufen, bis es keine Waisen gibt. Hier ist die Funktion:
function treeze(&$a, $parent_key, $children_key)
{
$orphans = true; $i;
while($orphans)
{
$orphans = false;
foreach($a as $k=>$v)
{
// is there $a[$k] sons?
$sons = false;
foreach($a as $x=>$y)
if(isset($y[$parent_key]) and $y[$parent_key]!=false and $y[$parent_key]==$k)
{
$sons=true;
$orphans=true;
break;
}
// $a[$k] is a son, without children, so i can move it
if(!$sons and isset($v[$parent_key]) and $v[$parent_key]!=false)
{
$a[$v[$parent_key]][$children_key][$k] = $v;
unset($a[$k]);
}
}
}
}
Empfehlung: der Schlüssel jedes Element des Arrays hat, die ID fo das Element selbst. Beispiel:
$ARRAY = array(
1 => array('label' => "A"),
2 => array('label' => "B"),
3 => array('label' => "C"),
4 => array('label' => "D"),
5 => array('label' => "one", 'father' => '1'),
6 => array('label' => "two", 'father' => '1'),
7 => array('label' => "three", 'father' => '1'),
8 => array('label' => "node 1", 'father' => '2'),
9 => array('label' => "node 2", 'father' => '2'),
10 => array('label' => "node 3", 'father' => '2'),
11 => array('label' => "I", 'father' => '9'),
12 => array('label' => "II", 'father' => '9'),
13 => array('label' => "III", 'father' => '9'),
14 => array('label' => "IV", 'father' => '9'),
15 => array('label' => "V", 'father' => '9'),
);
Verbrauch: die Funktion braucht ein (das Array), $ parent_key $ (den Namen der Spalte, in der die ID des Vaters gerettet wird), $ children_key (den Namen der Spalte, in der die Kinder werden sich bewegen). Es gibt nichts zurück (das Array wird durch Referenz geändert). Beispiel:
treeze($ARRAY, 'father', 'children');
echo "<pre>"; print_r($ARRAY);
nicht bekommen es ... Ihre Liste ist ein PHP-Array? – acm
mögliche Duplikate von [Wie kann ich eine Reihe von Eltern-Kind-Beziehungen in einen hierarchischen Baum umwandeln?] (Http://stackoverflow.com/questions/2915748/how-can-i-convert-a-series-of-parent - Kinderbeziehungen - in eine hierarchische Struktur) – GWW
@andre OP sucht nach einer Adjazenzliste. Dafür gibt es eine Reihe von Duplikaten. – Gordon