ChrisB: Variablenproblem

Beitrag lesen

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

--
„This is the author's opinion, not necessarily that of Starbucks.“