Hallo,
tach community,
warum kann ich anscheinend bei dieser form von abfrage
lediglich variablen und nicht zum beispiel eine ausgabe
definieren ?
Weil „?:“ ein Operator (also so was wie +, *, &, etc.) ist, d.h. es muss ein Ergebnis zurückgegeben werden.
http://de.php.net/manual/de/language.operators.compa…
Das ist nicht einfach nur eine Kurzschreibweise von if…then…else, sondern von der Implementierung her etwas anderes.
–>> $var?true:false Beispiel:
Richtig:
$frage?$msg=„antwort ist true“
msg=„antwort ist false“;
echo $msg;
oder echo $frage?„antwort ist true“:„antwort ist false“;
oder $msg = $frage?„antwort ist true“:„antwort ist false“; echo $msg;
Falsch:
$frage?echo „antwort ist true“:echo „antwort ist false“;
echo geht nun ausgerechnet nicht, weil die Funktion keinen Rückgabewert hat (void). Siehe http://php.net/echo
print geht, da Rückgabetyp int
oder
$frage??>antwort ist true<?: ?>antwort ist
false;
Geht auch nicht, da die Anweisung mit ?> beendet wird, der Ausdruck aber nicht vollständig ist. Ist analog zu $x = $a + ?> … $b; ?>, so was geht einfach nicht, da php bei ?> den Ausdruck beendet (und da natürlich nen Fehler findet, weil ein Operand fehlt).
Gibt es keien Möglichkeit der direkten Ausgabe dieser
Kurzschrift Variante?
siehe oben, für dein if ist evtl. http://de.php.net/manual/de/control-structures.alter… interessant: if ($frage): ?> … else : ?>… endif ?>
Und… wie suche ich eigentlich bei PHP nach solchen Sachen?
http://php.net, die Doku lesen (III-V sollte man mal gelesen haben), http://php-faq.de ist auch ganz nett
Alexander