[PHP] Uninitialized string offset

Pagina: 1
Acties:

  • Funcracker
  • Registratie: Juni 2001
  • Laatst online: 28-04 18:17

Funcracker

The LedZ Collective

Topicstarter
In mijn code (zie hieronder) krijg ik bij het inlezen en parsen van een file bovenstaande fout.. Dit is erg wazig, aangezien het een hele tijd goed gaat en opeens om onverklaarbare reden niet meer..
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$lines = explode("\n", $buffer);        
for ($i = 0; $i < sizeof($lines); $i++)
 if (strstr($lines[$i], "[")) {
  $ddbox = str_replace(" ", "", preg_replace($header_s,
     $header_r, $lines[$i]));
  echo "\$$ddbox created as an array<BR>";
  $$ddbox = array();
  $set = $ddbox;
  $inits[$set] = &$$ddbox;
 } else if (strstr($lines[$i], "=") && isset($set)) {   
  $opt = preg_replace($option_s, $option_r, $lines[$i]);
  $key = 0;
  list($key, $value) = explode(',', $opt);
  echo "$key => $value is option for $set<BR>";
  $$set[$key] = $value;
  echo "$set -> $key: " . $$set[$key] . "<BR>";
 }
}

Dit is slechts een gedeelte, maar de fout zit rond regel:
"$$set[$key] = $value;"

De input file ziet er zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Complaints]
1 = Unknown
2 = Yes
3 = No

[EMA]
1 = Unknown
2 = Yes
3 = No

[Marsh Type]
1 = Undetermined
2 = Unknown
3 = Normal

Dit is een gedeelte uit het midden van het bestand, en tevens het gedeelte waar deze fout de eerste keer in voorkomt.

De output op mijn scherm:
code:
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
$Complaints created as an array
1 => Unknown is option for Complaints
Complaints -> 1: Unknown
2 => Yes is option for Complaints
Complaints -> 2: Yes
3 => No is option for Complaints
Complaints -> 3: No
$EMA created as an array
1 => Unknown is option for EMA
EMA -> 1: Unknown
2 => Yes is option for EMA
EMA -> 2: Yes
3 => No is option for EMA

Notice: Uninitialized string offset: 3
in /usr/local/apache/htdocs/gids/include/readini.inc on
line 112

Notice: Uninitialized string offset: 3 
in /usr/local/apache/htdocs/gids/include/readini.inc on 
line 115
EMA -> 3: No
$MarshType created as an array
1 => Undetermined is option for MarshType
MarshType -> 1: Undetermined

Ik snap niet waarom deze error niet eerder optreed als ik echt iets verkeerd gedaan zou hebben. Later treed deze fout nog 5 keer op, en daarna gaat mijn code helemaal flippen, maar dat is van later zorg :) Ik hoop dat dat misschien hiermee opgelost kan worden.

Rare is ook, dat hoewel ik een unitialized string offset heb er niets verder fout lijkt te gaan.. Aan de echo's op het scherm is zichtbaar dat wat ik vlak voor het commando op het scherm schrijf, naderhand ook blijkt te kloppen.

Kan iemand me hiermee helpen? Of me vertellen waar deze error doorgaans mee te maken heeft..

I am one hell of a guy, I can do anything I want, only I just don't have the faintest idea what.
Zaphod Beeblebrox, in The Hitch Hiker's Guide To The Galaxy


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

En ${$set[$key]} ?

Alhoewel ik je overmatig "variabele variabele" gebruik erg "ranzig" vindt.
En het zelf zo min mogelijk toepas.

  • Funcracker
  • Registratie: Juni 2001
  • Laatst online: 28-04 18:17

Funcracker

The LedZ Collective

Topicstarter
Op woensdag 03 juli 2002 11:26 schreef ACM het volgende:
En ${$set[$key]} ?

Alhoewel ik je overmatig "variabele variabele" gebruik erg "ranzig" vindt.
En het zelf zo min mogelijk toepas.
Dat werkt ook niet.
Je mag het ranzig vinden :)

Maar even goed heb ik het opgeslot door gebruik van arrays.
Dat $$ gedoe werkt dus toch minder goed dan ik verwachtte.
Misschien moet ik dat toch maar minder gaan doen dan..

I am one hell of a guy, I can do anything I want, only I just don't have the faintest idea what.
Zaphod Beeblebrox, in The Hitch Hiker's Guide To The Galaxy


Verwijderd

Gebruik de info file parser van php ;)
Edit: Parse ini file

  • The Noid
  • Registratie: Januari 2000
  • Laatst online: 17-03-2011
Je derde 'key' heeft een spatie in de naam, een variabele mag geen spatie in de naam hebben...
'k weet niet of dat dit probleem verkaart, maar't gaat wel een probleem zijn.

edit:

nee dus, dat vang je wel op :)


't is misschien netter om 't allemaal in 1 meerdimensionale array te zetten?

This must be that Woodstock place mom and dad are allways talking about