Toon posts:

[PHP5] undefined offset...

Pagina: 1
Acties:
  • 47 views sinds 30-01-2008

Verwijderd

Topicstarter
Hoi,

Ik heb een vereenvoudigd voorbeeldscriptje gemaakt dat prima werkt in met PHP4.*:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//De verchillende menu items met een id, een bovenligend id en een naam...
$item[0]  = array('id'=>1, 'parent_id'=>0,'naam'=>"item_1");
$item[1]  = array('id'=>2, 'parent_id'=>0,'naam'=>"item_2");
$item[2]  = array('id'=>3, 'parent_id'=>0,'naam'=>"item_3");
$item[3]  = array('id'=>4, 'parent_id'=>0,'naam'=>"item_4");
$item[4]  = array('id'=>5, 'parent_id'=>1,'naam'=>"item_5");
$item[5]  = array('id'=>6, 'parent_id'=>1,'naam'=>"item_6");
$item[6]  = array('id'=>7, 'parent_id'=>1,'naam'=>"item_7");
$item[7]  = array('id'=>8, 'parent_id'=>1,'naam'=>"item_8");
$item[8]  = array('id'=>9, 'parent_id'=>5,'naam'=>"item_9");
$item[9] = array('id'=>10, 'parent_id'=>5,'naam'=>"item_10");

//de volgorde waarin men bij het uiteindelijke item gekomen is.
//in dit geval is dus op 1 geklikt, en vervolgens op 5...
$click_seq = array(0=>0,1=>1,2=>5);

//functie om spaties enzo te maken...
function spaces($counter){
    $spaces = "";
    for($i=0; $i<$counter; $i++){
        $spaces .= "|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
    }
    return $spaces;
}

//functie die op recursieve wijze het menu opbouwt...
function makeTree($item, $click_seq, $counter, $top){
    $cnt = count($item);    
    $depth = count($click_seq);
    
    for($i=0; $i<$cnt; $i++){
        if($item[$i]['parent_id'] == $click_seq[$counter] && $top == $click_seq[$counter] && $counter < $depth){ //hier krijg ik een fout, ivm met $depth...
            echo spaces($counter);
            echo "|--- ".$item[$i]['naam']."<br>";
            makeTree($item, $click_seq, $counter + 1, $item[$i]['id']);
        }
    }
}

makeTree($item, $click_seq, 0,0);


Op regel 32 krijg ik de volgende fout: Notice: Undefined offset: 3 in TMPucsc2zdhm5.php on line 32

Wat het script moet doen is een menu opbouwen en aan de hand van $click_seq de juiste submenu;s openen. Dit werkt redelijk, met PHP 4 zelfs heel goed, maar PHP 5 gooit er die irritante error doorheen. Ik heb heel wat topics doorgenomen, en ook flink gegoogled, maar de offste error in dit verband kan ik gewoon niet helemaal plaatsen.

Ik vraag niet om een scriptdebug, maar iemand die mij kan vertellen wat die error in dit verband betekent. Het script gaat draaien op een server met PHP4, maar stel dat ze ooit gaan upgraden, dan wil ik vast voorbereid zijn....

output PHP4:
code:
1
2
3
4
5
6
7
8
9
10
|--- item_1
|      |--- item_5
|      |      |--- item_9
|      |      |--- item_10
|      |--- item_6
|      |--- item_7
|      |--- item_8
|--- item_2
|--- item_3
|--- item_4


output PHP5:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|--- item_1
|      |--- item_5
|      |      |--- item_9

Notice: Undefined offset: 3 in D:\Projecten\Gastronome\webtests\TMPucsc2zdhm5.php on line 32

[...Nog een aantal keer dezelfde error...]

Notice: Undefined offset: 3 in D:\Projecten\Gastronome\webtests\TMPucsc2zdhm5.php on line 32
|      |      |--- item_10

Notice: Undefined offset: 3 in D:\Projecten\Gastronome\webtests\TMPucsc2zdhm5.php on line 32

[...Nog een aantal keer dezelfde error...]

Notice: Undefined offset: 3 in D:\Projecten\Gastronome\webtests\TMPucsc2zdhm5.php on line 32

|      |--- item_6
|      |--- item_7
|      |--- item_8
|--- item_2
|--- item_3
|--- item_4

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Mja sorry, maar het blijft een simpel debug topic. De error legt perfect uit wat er aan de hand is: je hebt een array waarvan je het 3e element aan wilt spreken, die er blijkbaar niet is. Ik denk dat het enige verschil tussen php 4 en 5 is dat je in 5 een krtischere error-reporting hebt ingesteld. Zet error-reporting sowieso op E_ALL zodat je direct de fouten in je code ziet. En wat je probleem betreft: gewoon even de variabelen $i en $counter controleren

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Dit topic is gesloten.