Variablenproblem
Bobby
- php
Moin
Kann mir jemand den Unterschied zwischen:
$h1="Suchergebnisse Volltextsuche ".(isset($_GET['kat'])&& $_GET['kat']!="")?" - Kategorie ".$_GET['kat']:"";
und
$h1="Suchergebnisse Volltextsuche ";
$h1.=(isset($_GET['kat'])&& $_GET['kat']!="")?" - Kategorie ".$_GET['kat']:"";
erläutern. Ich dachte man kann das so zusammenfassen. Aber leider löscht es bei der 1. Variante den String "Suchergebnisse Volltextsuche". Also worin besteht der Unterschied?
Gruß Bobby
echo $begrüßung;
Kann mir jemand den Unterschied zwischen:
$h1="Suchergebnisse Volltextsuche ".(isset($_GET['kat'])&& $_GET['kat']!="")?" - Kategorie ".$_GET['kat']:"";
und
$h1="Suchergebnisse Volltextsuche ";
$h1.=(isset($_GET['kat'])&& $_GET['kat']!="")?" - Kategorie ".$_GET['kat']:"";
>
> erläutern.
[Operatoren-Rangfolge](http://www.php.net/manual/en/language.operators.precedence.php). Der . ist stärker als das ?:
Somit ergibt
"Suchergebnisse Volltextsuche " . true
und
"Suchergebnisse Volltextsuche " . false
immer einen String, der zu true evaluiert. Mithin ist das Ergebnis stets
" - Kategorie " . $\_GET['kat']
inklusive Notice, wenn $\_GET['kat'] nicht existiert.
> Ich dachte man kann das so zusammenfassen.
Klammere den zweiten Teil.
echo "$verabschiedung $name";
Moin
Danke ihr beiden. Wieder was gelernt...
Gruß Bobby
Hi,
$h1="Suchergebnisse Volltextsuche ".(isset($_GET['kat'])&& $_GET['kat']!="")?" - Kategorie ".$_GET['kat']:"";
>
> ~~~php
> $h1="Suchergebnisse Volltextsuche ";
> $h1.=(isset($_GET['kat'])&& $_GET['kat']!="")?" - Kategorie ".$_GET['kat']:"";
>
Ich dachte man kann das so zusammenfassen. Aber leider löscht es bei der 1. Variante den String "Suchergebnisse Volltextsuche". Also worin besteht der Unterschied?
Der Unterschied besteht darin, dass bei der ersten Variante erst mal "Suchergebnisse Volltextsuche " und (isset($_GET['kat'])&& $_GET['kat']!="") mit dem Verkettungsoperator verknuepft werden - und anschliessend *darauf* der tenaere Operator ? angewandt wird.
Das liegt an der Rangfolge der Operatoren.
Beim der zweiten Variante passiert das nicht - dort kann sich der tenaere Operator nur auf das davor stehende in den Klammern beziehen, weil der komplette Ausdruck erst ausgewertet wird, bevor er ueber den .= Operator an die davor stehende Variable angehaengt wird.
Und natuerlich kannst du auch die erste Variante benutzen - wenn du den tenaeren Ausdruck zusaetzlich einklammerst.
MfG ChrisB