Sollzustände aus einer Textdatei für Boolean Variable einlesen

Hallo ich habe folgendes Problem.

Ich möchte Sollzustände aus einer Textdatei (DATEI.TXT) für Boolean Variable einlesen. Also „true“ und „false“.
Das mit dem einlesen geht auch soweit, nur ich bekomme die Boolean Variable nicht gesetzt. Obwohl ich den Zustand „true“ einlesen bekomme ich die Variable nicht auf „true“ also 1.

Ersetze ich beim einlesen „true“ durch eine 1 geht es. Dasselbe ist beim abspeichern von den Zuständen in eine (DATEI.EXT) da wir „true“ automatisch zu 1 in der TXT.Datei. Nur da kann ich die 1 nicht durch „true“ ersetzen weil ich auch noch Zahlenwerte mit abspeichere, und in der können schon mal EINSEN (1) vorkommen.
Wie muß ich davor gehen?

Gruß Uwe

Wie sieht den deine Datei.TXT aus ?
So vielleicht


12345,true
54321,false
etc.

true (TAP) 22:00(TAB) 21,5(TAB) false(TAB)
false (TAP) 23:00(TAB) 19,5(TAB) false(TAB)

usw

Gruß Uwe

Also ich kenn ja dein Script nicht aber in der Textdatei ist ja die Variable nicht definiert
aber ich wuerde das einlesen so machen.


	// Inhalt der Datei
	//       true  22:00 21,5  false
	//       false 23:00 19,5  false

	$file = "C:\	mp\\Datei.TXT";
	
	$zeilen = file ($file);

	foreach ($zeilen as $zeile)
		{
		// Zeile fuer Zeile
		$zeile = str_replace('true' ,1,$zeile);   // ersetze true  durch 1
		$zeile = str_replace('false',0,$zeile);   // ersetze false durch 0
		$array = explode("	",$zeile);            // lese Werte in array , Trennzeichen (TAB)
		print_r($array);
		}


Ergebniss waere dann


Array
(
    [0] => 1
    [1] => 22:00
    [2] => 21,5
    [3] => 0 

)
Array
(
    [0] => 0
    [1] => 23:00
    [2] => 19,5
    [3] => 0
)

Ok, das habe ich jetzt so gemacht, es geht auch.

Wie kann ich das ARRAY jetzt wieder in die Datei.TXT speichern ?

Wenn ich 0 gegen false ersetzte, werde auch die Zahlenwerte geändert.

Aus 20,5 wird 2false,5 !

Gruß Uwe

So auf die Schnelle


     // Inhalt der Datei
    //       true  22:00 21,5  false
    //       false 23:00 19,5  false

    $file_in  = "C:\	mp\\Datei_in.TXT";
	 $file_out = "C:\	mp\\Datei_out.TXT";

    $zeilen = file ($file_in);

	 $fp = fopen($file_out, "w");
	 
    foreach ($zeilen as $zeile)
        {
        // Zeile fuer Zeile
        $zeile = str_replace('true' ,1,$zeile);   // ersetze true  durch 1
        $zeile = str_replace('false',0,$zeile);   // ersetze false durch 0
        $array = explode("	",$zeile);            // lese Werte in array , Trennzeichen (TAB)

		  // mach irgendwas mit dem array

        if ( $array[0] == 1 ) $array[0] = 'true';
        if ( $array[0] == 0 ) $array[0] = 'false';
        if ( $array[3] == 1 ) $array[3] = 'true';
        if ( $array[3] == 0 ) $array[3] = 'false';

		  $zeile = $array[0] . "	" . $array[1] . "	" .$array[2] . "	" .$array[3] . chr(13) . chr(10);
		  
        fwrite($fp, $zeile);
        }

    fclose($fp);

Hallo,

ich habe es befürchtet, jeden Wert einzeln überprüfen.

Gibt es nicht ein (ersetzen wenn das gefundene Wort genau gleich ist wie)?

Hier mal die ganze Datei: EIN = TRUE / AUS = false (DAS HABE ICH SCHON GEÄNDERT)

Fenster von bis Prg1 Zeit1 Temp1 Prg2 Zeit2 Temp2 Prg3 Zeit3 Temp3 Prg4 Zeit4 Temp4 Name
Ein 00:00 24:00 Ein 00:00 15,0 Aus 09:00 15,0 Aus 16:00 15,0 Aus 22:00 15,0 Abwesend
Ein 00:00 24:00 Ein 06:00 19,0 Aus 09:00 15,0 Aus 16:00 15,0 Aus 22:00 15,0 Kamin EIN
Ein 00:00 24:00 Ein 08:00 22,0 Aus 09:00 19,0 Aus 16:00 19,0 Ein 22:00 19,0 Wochenende
Ein 00:00 24:00 Ein 08:00 21,0 Aus 09:00 19,0 Ein 14:15 22,0 Ein 22:00 19,0 Woche
Ein 00:00 24:00 Ein 08:00 21,0 Aus 09:00 19,0 Ein 14:30 22,0 Ein 22:00 19,0 Frühschicht

Gruß Uwe

Vielleicht so besser ?



	$file_in  = "C:\	mp\\Datei_in.TXT";
	$file_out = "C:\	mp\\Datei_out.TXT";

   $zeilen = file ($file_in);

	$fp = fopen($file_out, "w");
	 
   foreach ($zeilen as $zeile)
   		{
        	// Zeile fuer Zeile
        	echo $zeile;
        	$zeile = preg_replace("/\r|
/s", "", $zeile);
		  	
        	$zeile = str_replace('Ein'.chr(9),'1'.chr(9),$zeile);
		  	$zeile = str_replace('Aus'.chr(9),'0'.chr(9),$zeile);
		  
        	$array = explode("	",$zeile);            // lese Werte in array , Trennzeichen (TAB)

			$zeile = '';
			foreach( $array as $var )
			      {
					if ( $var == '1' ) $var = 'Ein';
					if ( $var == '0' ) $var = 'Aus';

			      $zeile = $zeile . $var . "	";
			      }
			

			echo $zeile;
			print_r($array);
			$zeile = $zeile . chr(13) . chr(10);
        	fwrite($fp, $zeile);
        	}

    fclose($fp);

ergibt


Quelldatei - >Ein	00:00	24:00	Ein	00:00	15,0	Aus	09:00	15,0	Aus	16:00	15,0	Aus	22:00	15,0	Abwesend
Zieldatei   ->Ein	00:00	24:00	Ein	00:00	15,0	Aus	09:00	15,0	Aus	16:00	15,0	Aus	22:00	15,0	Abwesend	

Array
(
    [0] => 1
    [1] => 00:00
    [2] => 24:00
    [3] => 1
    [4] => 00:00
    [5] => 15,0
    [6] => 0
    [7] => 09:00
    [8] => 15,0
    [9] => 0
    [10] => 16:00
    [11] => 15,0
    [12] => 0
    [13] => 22:00
    [14] => 15,0
    [15] => Abwesend
)