Hi
Ich habe folgendes Problem mit PHP4. Folgender Skriptteil funktioniert in PHP4 nicht.
PHP-Code:
// Constructor
function Navigation (){
// Alle Navigationselemente aus der Datenbank lesen und in ein Array schreiben.
$this->root = new NavigationNode("root","root", "Root", 0, "none", 0, 1);
$navigation_tmp_indexes = array();
$result_nav = mysql_query("SELECT * FROM navigation");
while($row_nav = mysql_fetch_array($result_nav)){
array_push($navigation_tmp_indexes,$row_nav["navigation_id"]);
$navigation_tmp_array[$row_nav["navigation_id"]] = new NavigationNode($row_nav["navigation_id"], $row_nav["tag"], $row_nav["caption"], $row_nav["parent_id"], $row_nav["template"], $row_nav["permission"], $row_nav["visible"]);
}
// Das Array wird durchgegangen, und es wird ein Navigationsbaum erstellt.
for($i = 0; $i < count($navigation_tmp_indexes); $i++){
$index = $navigation_tmp_indexes[$i];
if($navigation_tmp_array[$index]->parent_id == 0){
if(isset($this->root->child_node)){
$current_node = $this->root->child_node;
while(isset($current_node->next_node)){
$current_node = $current_node->next_node;
}
// Neues Element unter der Wurzel
$current_node->next_node = $navigation_tmp_array[$index];
}else{
// Neues und einziges Element unter der Wurzel
$this->root->child_node = $navigation_tmp_array[$index];
}
}else{
if(isset($navigation_tmp_array[$navigation_tmp_array[$index]->parent_id]->child_node)){
$current_node = $navigation_tmp_array[$navigation_tmp_array[$index]->parent_id]->child_node;
while(isset($current_node->next_node)){
$current_node = $current_node->next_node;
}
$current_node->next_node = $navigation_tmp_array[$index];
// Neues Element unter dem Knoten $navigation_tmp_array[$navigation_tmp_array[$index]->parent_id
}else{
// Neues und einziges Element unter dem Knoten $navigation_tmp_array[$navigation_tmp_array[$index]->parent_id
$navigation_tmp_array[$navigation_tmp_array[$index]->parent_id]->child_node = $navigation_tmp_array[$index];
}
}
}
}
Kurz zur erklärung was das Skript genau soll. Das Komplette Skript liest aus der Datenbank die Navigation aus und erstellt eine Baumstruktur. Wobei jeder Knoten als Kindknoten eine Linked-List mit seinen Unterknoten. Jeder Knoten ist ein Menueintrag. Das Problem liegt hier:
PHP-Code:
$current_node->next_node = $navigation_tmp_array[$index];
Und zwar funktioniert die Zuweisung irgendwie nicht. Komisch ist, dass die $this->root->child_node Zuweisung funktioniert.
In PHP5 funktioniert alles prima. Naja ich hoffe irgendjemand kann mir helfen.
Gruess Thomas