if( $drevo != "" ) $drevo = "";
function rekurs_tree ($xml, $parent, $xpath, $num) {
$drevo = '';
$nodes = $xml->xpath_eval ($parent, $xpath);
for ($i = 1; $i < sizeof ($nodes) + 1; $i++) {
$query = $xpath . "[position() = $i]/name_ru";
$query_a = $xpath . "[position() = $i]/node";
$n_cont = $xml->xpath_eval ($parent, $query);
$drevo .= str_repeat (' ', $num);
$drevo .= convert ($xml->get_content ($n_cont[0])) . '<br>';
$nodes_a = $xml->xpath_eval ($parent, $query_a);
if (sizeof ($nodes_a) != 0) {
$drevo .= rekurs_tree ($xml, $parent, $query_a, $num + 1);
}
}
return $drevo;
}
Нет ничего более постоянного чем это временное, так что с оптимизацией лучше не затягивать.Ilya
решил хоть и не самым лучшим способом, но решил, и сейчас думать как сделать лучше времени нет, надо делать проект дальше.
потом задумаюсь над оптимизацией.
спасибо.
гы-гы-гы.код, который ты написал в выше работает неправильно, выдаются нотайсы и дерево строится неправильно..
блин, Profic, говорю же успокойся, спасибо....Автор оригинала: Profic
2. Если он работает неправильно, значит и у тебя в оригинале он работал неправильно.
function rekurs_tree( $xml, $parent, $xpath, $num, $drevo ) {
if( $drevo != "" ) $drevo = "";
$num++;
$nodes = $xml->xpath_eval( $parent , $xpath );
for( $i = 1; $i < sizeof( $nodes ) + 1; $i++ ):
$space = "";
$query = $xpath . "[ position() = $i ]/name_ru";
$query_a = $xpath . "[ position() = $i]/node";
$n_cont = $xml->xpath_eval( $parent, $query );
$query_par = $xpath . "[ position() = $i ]/id";
$par_cont = $xml->xpath_eval( $parent, $query_par );
$par = convert( $xml->get_content( $par_cont[0] ) );
for( $j = 0; $j < $num; $j++ ):
$space .= " ";
endfor;
$drevo .= $space;
$drevo .= "<a target=\"cont\" href=\"cont.php?id=$par\" class=\"menu\">";
$drevo .= convert( $xml->get_content( $n_cont[0] ) ) . "</a><hr>";
$nodes_a = $xml->xpath_eval( $parent , $query_a );
if( sizeof( $nodes_a ) != 0 ):
$drevo .= rekurs_tree( $xml, $parent, $query_a, $num, $drevo );
endif;
endfor;
return $drevo;
}