PHP IF Anweisung / array

DufterTyp

Ensign
Registriert
Nov. 2008
Beiträge
188
Hallo Liebe Leute,

Problem:
Mein Programm springt leider nicht in die IF Anweisung(en). Das hochzählen mit dem "$Zaehler" funktioniert.
Leider habe ich noch nicht so viel erfahrung mit php. Ich hoffe ihr könnt mir einen Rat geben.

PHP Code:
PHP:
$array = file("..\Auswertung\localhost.txt");
$Zaehler = 0;
foreach ($array as $Value)
   {
        if ("Laufwerke" == $Value)
        {
            $Beginn = $Zaehler;
            Echo $array[0]; //Test (funktioniert nicht)
        }
        if ($Value == "RAMProzent")
        {
            $Ende = $Zaehler;
        }
        $Zaehler++;
   }
Echo $array[0] //Test (funktioniert)

localhost.txt

Code:
Laufwerke
Test1
test2
test3
RAMProzent
Test4

MFG
DufterTyp
 
Na dann erforsch mal warum es nicht funktioniert...
Füge Ausgaben hinzu, was in dem Array am Ende genau drin ist und welchen wert $Value bei jedem Durchlauf hat :o
 
@crezza
Das habe ich natürlich gemacht:

PHP Code:
PHP:
$array = file("E:\GoogleDrive\Projekte\CSS_Lernen\Auswertung\localhost.txt");
$Zaehler = 0;
foreach ($array as $Value)
   {
   Echo $Value; //Test funktioniert
        IF ("Laufwerke" == $Value)
        {
            $Beginn = $Zaehler;
            Echo $array[0];
        }
        IF ($Value == "RAMProzent")
        {
            $Ende = $Zaehler;
        }
        $Zaehler++;
   }

Ausgabe:
Code:
Laufwerke Test1 test2 test3 RAMProzent Test4
Anhand dieser Ausgabe muss ich doch sagen können das die Schleife funktioniert oder?
 
Ich vermute fast, weiss es aber nicht genau, dass es daran liegt (Zitat aus der File Dokumentation):

Gibt die Datei in einem Array zurück. Jedes Element des Arrays entspricht einer Zeile in der Datei, ohne dass das Zeilenende entfernt wird.

Das Zeilenende hast Du in Deinem Vergleich wahrscheinlich nicht berücksichtigt. Oder sonstige Whitespaces am Anfang/Ende der Zeilen. Je nachdem wie genaus Du es brauchst, würde ich Whitespaces immer entfernen und alles vorher in Kleinbuchstaben umwandeln zum Vergleich.
 
Zuletzt bearbeitet:
Dein Array enthält neben dem Wert auch die Elemente \r\n die durch die Formatierung der Datei zustande kommen.

Füg das mal vor der ersten If-Bedingung ein. Damit entfernst du alle Tabulatoren und Leerzeichen die durch das Einlesen der file Methode zustandekommen. Aber normalerweise kommt man auch selbst drauf wenn man print_r bzw var_dump benutzt oder den Debugger verwendet ;)
Code:
$Value = trim($Value);

Poster über mir war schneller :)
 
Das wird daran liegen, dass $Value nie gleich "Laufwerke" ist, sondern "Laufwerke\n". Probier folgendes:
Code:
$array = file("..\Auswertung\localhost.txt", FILE_IGNORE_NEW_LINES);

Edit: Oh, ich bin ganz schön langsam. ;)
 
Zuletzt bearbeitet:
Danke euch da wäre ich so schnell nicht drauf gekommen!
Habe beide Code's ausprobiert. Funktionieren beide tadellos!

Danke @H4110 @SymA @Drexel

MFG DufterTyp
 
Zurück
Oben