Kurzschr.-> $var?true:false

tach community,

warum kann ich anscheinend bei dieser form von abfrage
lediglich variablen und nicht zum beispiel eine ausgabe definieren ?

–>> $var?true:false Beispiel:

 **Richtig:**
 $frage?$msg="antwort ist true":blush:msg="antwort ist false";
 echo $msg;

 **Falsch:**
 $frage?echo "antwort ist true":echo "antwort ist false";
 oder
 $frage??\>antwort ist true<?: ?>antwort ist false;

Gibt es keien Möglichkeit der direkten Ausgabe dieser Kurzschrift Variante?
Und… wie suche ich eigentlich bei PHP nach solchen Sachen?
Fragen ueber Fragen…

-)

grusz

PixelKoenig

tach pixelity :smiley:

warum kann ich anscheinend bei dieser form von abfrage
lediglich variablen und nicht zum beispiel eine ausgabe
definieren ?

weil Du’s vermutlich nicht richtig machst *g*

Falsch:
$frage?echo „antwort ist true“:echo „antwort ist false“;

versuchs mal mit print statt echo :wink:

$frage??>antwort ist true<?: ?>antwort ist
false;

das liegt wohl an den doppelten bzw fünffachen Fragezeichen

Gibt es keien Möglichkeit der direkten Ausgabe dieser
Kurzschrift Variante?

wie gesagt - print

Und… wie suche ich eigentlich bei PHP nach solchen Sachen?
Fragen ueber Fragen…

tja… ich hab einfach mal ausprobiert und schnell festgestellt, dass ein die auch funktioniert hätte.
Und damit war wohl das echo die „Fehlerquelle“…

schreib einfach echo $frage ? ‚bla‘ : ‚blablabla‘;

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“:blush: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