Autor Zpráva
TFSi
Profil
Zdravím,
někde jsem vyštrachal takový postarší skript zpracovávající vícerozměrné pole. Na PHP4 běhal v pohodě, ale na PHP5 vrací jen výsledek prvního cyklu:
mám pole
$array = Array(

'id1' => Array('connect' = false, 'title' = 'text'),
'id2' => Array('connect' = 1, 'title' = 'text'),
'id3' => Array('connect' = 1, 'title' = 'text'),
'id4' => Array('connect' = 2, 'title' = 'text'),
'id5' => Array('connect' = 2, 'title' = 'text'),
'id6' => Array('connect' = 4, 'title' = 'text'),
)


a skript:

function make_navigation($id = 6) {

global $array;
$tree = Array();
$tree = get_tree($id);
$tree = array_reverse ($tree, false);
$tmp = "
".'<div id="new">';
for($i=0; $i<(count($tree)-1); $i++) {
echo "
".' <a href="?page='.$tree[$i]['connect'].'">'.$tree[$i]['title'].'</a>
<span>&gt;</span>'."
";
}
echo '</div>'."
";
}

function get_tree($id) {
global $array, $tree;
$tree[] = Array('connect' => $id, 'title' => $array['id'.$id]['title']);
if($array['id'.$id]['connect'] != false) get_tree($array['id'.$id]['connect']);
return $tree;
}


No a v PHP4 má $tree správně:
$tree = Array(

0 => Array('id6', 'text'),
1 => Array('id4', 'text'),
2 => Array('id2', 'text'),
3 => Array('id1', 'text')
);

... ale PHP5 pro jistotu vrací jenom
$tree = Array(

0 => Array('id6', 'text')
);


No, náhodou nevíte někdo, kde dělám chybu?
bukaj
Profil
TFSi
Problém bych řekl, že bude v používání globáních proměnných.

Konkrétně se mi zdá, že se bude jednat o proměnnou $tree, která je globalizovaná ve fci get_tree(), ale ve fci make_navigation() je pouze lokální.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: