Tom: Kann keine neue Zeile in Text-Datei einfügen (-> Fehler inside)

Beitrag lesen

Hello,

Moin Wilhelm Turtschan,

if(!$openfile = fopen("$file","a+")):
 die("Open nicht erfolgreich<br>");
endif;

Ich ziehe mich auf mein Altenteil zurück. Wo war nu der Fehler?

Na, wenn du schreibst:

$a = $b || $c;

was steht dann hinterher in $a drin?

Hier ein kleines "Testscript"
---------------------------------------------------------
<?php ### reihenfolge.php , Abschnitt Operatoren ###

$a = 1;
$b = 4;
$c = 7;

$a = $b || $c;

echo "a: $a<br>";
echo "b: $b<br>";
echo "c: $c<br>";

echo "<hr>";

$a = 0;
$b = 0;
$c = 1;

$a = $b || $c;

echo "a: $a<br>";
echo "b: $b<br>";
echo "c: $c<br>";

echo "<hr>";

$a = 0;
$b = 7;

$a = $b || die("keine Ausgabe");

echo "a: $a<br>";
echo "b: $b<br>";
echo "c: $c<br>";

echo "<hr>";

$a = 1;
$b = 4;
$c = 7;

($a = $b) || $c;

echo "a: $a<br>";
echo "b: $b<br>";
echo "c: $c<br>";

?>
------------------------------------------------------------

Die Reihenfolger der Abarbeitung der Operatoren ist entscheidend.
Der Vergleichsopertor || (OR) für der logischen Vergleich (also NICHT den bitweisen) wird für dem Zuweisungsoperator (=) ausgeführt. Wenn das Ergebnis des ODER also TRUE ist, dann wird dieses TRUE ( entspricht 1) dem $a zugewiesen. Es steht also hinterher nicht mehr das beschaffte Handle (hier symbolisch mit $b dargestellt) in $a, sondern das Ergebnis des ODER-Vergleichs.

Wenn Du aber schreibst:

if($a = $b) or ($c = $d);

dann steht in $a danach auf jeden Fall $b drin und in in $c steht nur dann $d drin, wenn $b == 0 oder false war. (Zusatzinfo: Alle Werte waren vorher unterschiedlich)

Wie man im kleinen Testprogramm sieht, würde auch

($a = $b) or $c;

funktieren. Das ist aber kein sauberer Schreibstil, auch wenn das Statement in C-basierten Dialekten vollkommen in Ordnung ist.

Liebe Grüße aus http://www.braunschweig.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen