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