2016-09-27 7 views
-2

Ich brauche ein Blog mit einer TXT-Datei für ein Schulprojekt. In der Textdatei $ blog [0] ist der Titel der Nachricht, $ blog 1 ist der Benutzername und $ blog [2] ist die Nachricht selbst.Hinweis: Undefinierter Offset: 1 in While-Schleife

$file = fopen('blogs.txt', 'r'); 

    while(!feof($file)) { 
     $blog = fgets($file); 
     $blog = explode("*", $blog); 

     echo " 
     <p><strong>". $blog[0]. "</strong> 
     <br>By: ". $blog[1]. 
     "<br>". $blog[2]; 
    } 

Die Seite zeigt alle Nachrichten an. Aber unten habe ich ein paar 'Undefined Offsets: 1' und 'Undefined offset: 2'. Es sagt auch "By:" (wie im Echo gezeigt) ein paar Mal.

This is what the page looks like

+3

Diese sind höchstwahrscheinlich leer Zeilen, die Sie für die lesen in der 'explode()' Befehl mehr als ein einzelnes leer produzieren ausfällt Element. Ich schlage vor, dass Sie den Dateiinhalt zu Ihrer Frage hinzufügen. – arkascha

+0

Sie hatten ein Array von einem Element, so dass Sie auf $ blob [0] zugreifen können, aber nicht $ blob [1], bz es existiert nicht – Janaka

Antwort

1

Überprüfen Sie, ob explode kehrt mehr als ein Element:

$blog = explode("*", $blog); 

id (count($blog) >= 3) { 
    echo " 
    <p><strong>". $blog[0]. "</strong> 
    <br>By: ". $blog[1]. 
    "<br>". $blog[2]; 
} else { 
    //do some other stuff 
} 
+0

Es zeigt nur eine Nachricht, aber keine Fehlercodes, was ein guter Anfang ist. Wie kann ich mehr als einen anzeigen lassen? –

+0

Korrigieren Sie Ihre Daten von dem, was Sie gelesen haben. Andernfalls verwenden Sie den "else" -Teil, um diesen Fehler zu erfassen und alternativen Inhalt auszugeben – rbr94

Verwandte Themen