Scriptfehler undefined offset - Was sagt mir das?

hallo,

ich habe heute auf dei 2.1 umgestellt, und dabei jetzt diese Hinweise bekommen, die mir jedoch nichts sagen:

Notice: Undefined offset: 6 … on line 9, also in der Zeile mit dem list.

Könnte mir da jemand weiterhelfen?

Danke und Gruß
Achim

<?
if (file_exists("..\myconf\Rolladen.txt"))
{
     $dateirolladen = fopen("..\myconf\Rolladen.txt","r");
     while (!feof($dateirolladen))
     {
        $Zeile = fgets($dateirolladen);
        list($Location,$Relais220V,$RelaisHoch,$ZeitHoch,$ZeitRunter,$SchalterIDHoch,$SchalterIDRunter)=explode(";",$Zeile);
        print $Location;
    }
    fclose ($dateirolladen);
 }
?>

Der Befehl „explode“ zerlegt einen String in ein Array. „list“ zerteilt dieses Array wiederrum in die verschiedenen Variablen:

$Location,
$Relais220V,
$RelaisHoch,
$ZeitHoch,
$ZeitRunter,
$SchalterIDHoch,
$SchalterIDRunter

Das sind also 7 Variablen. Wenn das Array allerdings nur 6 oder weniger Elemente hat dann gibt es den oben genannten „Fehler“ (es ist kein Fehler sondern ein Hinweis)

Ich denke dein Array hat nur 6 Elemente. Daher auch die Fehlermeldung „Undefined offset: 6“. Arrayelemente beginnen ja mit 0, also fehlt offenbar das siebte Element.

Was hast du denn in $Zeile stehen als Wert?

Hallo,

da steht z.B. sowas drin:
//Loc;Relais220V;RelaisHoch;ZeitHoch;ZeitRunter;SchalterIDHoch;SchalterIDRunter;
Arbeitszimmer.Rechts;60407;27588;27;24;
Arbeitszimmer.Links;35816;38610;36;30;
Wohnzimmer.Links;29750;22582;36;30;29000;25276;

Könnten das die ersten beiden Zeilen sein, in denen dann aber auch nur 5 Werte stehen?

Danke und Gruß
Achim

Arbeitszimmer.Rechts;60407;27588;27;24; = 6 Teile
Arbeitszimmer.Links;35816;38610;36;30; = 6 Teile
Wohnzimmer.Links;29750;22582;36;30;29000;25276; = 8 Teile

(Das „Nichts“ hinter dem letzten ; wird auch als ein Teil gewertet :slight_smile: )

Ja, die ersten beiden verursachen dann wohl den „Fehler“

Probier mal:


if (file_exists("..\myconf\Rolladen.txt"))
{
     $dateirolladen = fopen("..\myconf\Rolladen.txt","r");
     while (!feof($dateirolladen))
     {
        $Zeile = fgets($dateirolladen);
        $temp=explode(";",$Zeile);
        if(count($temp)>=7){
            list($Location,$Relais220V,$RelaisHoch,$ZeitHoch,$ZeitRunter,$SchalterIDHoch,$SchalterIDRunter)=$temp;
        }elseif(count($temp)>=5){
            list($Location,$Relais220V,$RelaisHoch,$ZeitHoch,$ZeitRunter)=$temp;
            $SchalterIDHoch="";
            $SchalterIDRunter="";
        }
        print $Location;
    }
    fclose ($dateirolladen);
 }

Funktioniert, danke!