Was sind die PHP-Operatoren "?" und ":" wird aufgerufen, und was tun Sie?
Was sind die ?
und :
Operatoren in PHP?
Beispiel:
(($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was sind die ?
und :
Operatoren in PHP?
Beispiel:
(($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist die bedingte operator.
bedeutet, "wenn
$x
wahr ist, dann verwenden Sie$y
; andernfalls verwenden Sie$z
".Es hat auch eine kurze form.
bedeutet, "wenn
$x
wahr ist, dann verwenden Sie$x
; andernfalls verwenden Sie$z
".Leute werden Ihnen sagen, dass
?:
ist "ternären operator". Das ist falsch.?:
ist eine ternärer operator, was bedeutet, dass es drei Operanden. Menschen, wind, dachte sein name ist "ternären operator", weil es oft die einzige ternäre operator eine bestimmte Sprache hat.?:
Betreiber "ternärer operator" ist gut etabliert; der Begriff ist weit häufiger als "bedingte operator".AND
undOR
die überprüfen, ob der linke operand true ist, macht Sie bedingte Operatoren. Es geht durch beide, und oft zitiert, zusammen, denn Sie sind ein und dasselbe.Was ist ein ternärer operator?
Einer ternären
? :
ist die Kurzform fürif
undelse
. Das ist im Grunde es. Siehe "Ternär Operatoren" auf halbem Weg nach unten auf dieser Seite für mehr einer offiziellen Erklärung.PHP 5.3:
PHP 7.0
In PHP 5, wenn Sie wollte ein ternärer mit einer möglicherweise nicht vorhandenen-variable ist, dann würden Sie durchführen, ein isset() am Anfang der ternären Aussage:
In PHP 7, können Sie nun statt:
Der Null Coalesce Operator funktioniert nicht mit einem leeren string, aber, so Bedenken Sie, dass. Die große Sache über dieses ist, kann man auch die Kette der Betreiber für mehrere Prüfungen für mehrere Variablen, die Bereitstellung eine Art von backup, je nachdem, ob oder nicht, jede variable in der Kette vorhanden ist:
In PHP, mit Systemen, in denen ein Benutzer einloggen kann, ist es nicht ungewöhnlich, dass ein administrator in der Lage sein zu erwecken, ein anderer Benutzer für Testzwecke. Mit dem obigen Beispiel, wenn der Benutzer nicht die Identität anderer Benutzer, und auch für angemeldete Benutzer nicht vorhanden ist, dann wird der Benutzer ein Gast-Benutzer statt. Lesen Sie mehr, wenn Sie nicht verstehen, diese noch zu sehen, was ternaries sind und wie Sie verwendet werden, und dann wieder kommen, um dieses bit, um zu sehen, wie die neuen PHP -
Wie ternaries verwendet?
Hier ist, wie eine normale
if
Aussage sieht:Let ' s verkürzen, die unten in ein Dreieck.
Viel kürzer, aber vielleicht schwerer zu Lesen. Sie sind nicht nur für die Einstellung der Variablen wie
$var
im vorherigen Beispiel, aber Sie können dies auch tun, mitecho
, und um zu überprüfen, ob eine variable false ist oder nicht:Warum tun Menschen, Sie zu nutzen?
Ich denke ternaries sind sexy. Einige Entwickler, wie zu zeigen, aber manchmal ternaries nur schön Aussehen in Ihrem code besonders in Kombination mit anderen features wie PHP 5.4 ist die Letzte kurze echos.
Off-topic leicht, wenn man in einer "Ansicht/Vorlage' (wenn Sie trennen Sie Ihr Anliegen durch das MVC Paradigma), Sie wollen so wenig server-side Logik drin wie möglich. Also, mit ternaries und andere kurze-hand-code ist manchmal der beste Weg nach vorn. Durch "andere short-hand-code", dann meine ich:
Hinweis, ich persönlich nicht, wie diese Art von Kurzschrift-if /endif Unsinn
Wie schnell ist der ternäre operator?
Menschen WIE Mikro-Optimierungen. Sie tun nur. Also für einige, es ist wichtig zu wissen, wie viel schneller Dinge wie ternaries sind verglichen mit normalen
if
/else
Aussagen.Lesen dieser Beitrag, die Unterschiede sind etwa 0,5 ms. Das ist eine Menge!
Oh warte, Nein das ist es nicht. Es ist nur eine Menge, wenn Sie tun, Tausende und abertausende von Ihnen in einer Zeile wiederholt. Das werden Sie nicht. Also Mach dir keine sorgen über die Geschwindigkeit der Optimierung, ist es absolut sinnlos hier.
Wenn Sie nicht zu benutzen ternaries
Ihr code sollte sein:
Offensichtlich ist das Thema auf die Personen, die Intelligenz und die Codierung wissen /Allgemeine Verständnis über solche Konzepte, wenn Sie kommen, um Blick auf Ihren code. Ein einfaches Diagramm, wie die vorangegangenen Beispiele sind okay, so etwas wie die folgenden, jedoch ist nicht, was Sie tun sollten:
War sinnlos, und zwar aus drei Gründen:
switch
AnweisungAbschluss
Ternaries wirklich einfach sind und nichts zu bekommen auch gearbeitet über. Denke nicht, dass alle Verbesserungen in der Geschwindigkeit, es wird nicht wirklich einen Unterschied machen. Verwenden Sie diese, wenn Sie einfach und schön Aussehen, und immer sicherstellen, dass Ihr code lesbar und von anderen in der Zukunft. Wenn das bedeutet, dass keine ternaries, dann verwenden Sie nicht ternaries.
if/else
- Anweisungen können in einigen Situationen sehr viel schneller sein. Aus der referenzierten blog-Beitrag kann man Lesen: "Auf meinem laptop, snippet 1 [dreifachen] nimmt mehr als zwei Sekunden, während die snippet-2 [, wenn/sonst] dauert etwa 0,05 ms. Das ist ein großer Unterschied! Aber wenn die variable test-host nicht viele Daten, die Geschwindigkeit ist fast das gleiche."Es heißt, einen ternärer operator. Wenn der erste Ausdruck true ergibt, wird
HTTPS_SERVER
verwendet wird, sonstHTTP_SERVER
gewählt.Es ist im Grunde eine Kurzform
if
- Anweisung, und der obige code könnte auch wie folgt umgeschrieben werden:Dies ist manchmal bekannt als der ternäre Bedingungsoperator. Ternär bedeutet, dass es drei Argumente, wie
x ? y : z
. Grundsätzlich wird überprüft, obx
wahr ist; wenn es ist, dann setzeny
statt diesem Betrieb, sonstz
.Bedingte operator
? :
ist ein operator, welcher verwendet wird, um zu überprüfen eine Bedingung und wählen Sie einen Wert, abhängig vom Wert der Bedingung. Es ist ausgedrückt in der folgenden form:Funktioniert es wie folgt...
Beispiel:
In dieser, für x, wird zunächst die Bedingung (a>b) ausgewertet. Wenn diese Bedingung wahr wird, dann x wird der Wert 5 (ie, x=5). Aber wenn die Bedingung (a>b) wird zu false, dann wird x erreicht den Wert 9 (ie, x=9).
Ternärer Operator
Manchmal Bedingungsoperator
? :
ist auch als ein ternärer operator. Dies ist so, weil es umfasst drei Operanden. Zum Beispiel:Hier x,y und z sind die drei Operanden. Wenn Bedingung x ist wahr, dann Wert y zugewiesen ist, sonst Wert z zugeordnet ist.
Dies ist eine kurze Schreibweise
if
Sätze. Es wird auch in anderen Sprachen wie Java, JavaScript und anderen.Ihren code,
kann wie folgt geschrieben werden:
$protocol
richtig zuHTTPS_SERVER
undHTTP_SERVER
im Gegensatz zu den anderen Antworten. +1Ist eine einzeilige if-Anweisung:
Übersetzt in eine normale if-Anweisung in deinem Fall wäre:
Das ist im Grunde eine andere Art des Schreibens eine
if
-else
- Anweisung. Einige sagen, es ist leichter zu Lesen, andere sagen, nicht.Ternärer operator bei Wikipedia
Als John T sagt, es ist ein ternärer operator genannt und ist im Grunde eine kürzere version einer if /else-Anweisung. Ihr Beispiel, als ein full if /else-Anweisung, Lesen würde;
poundifdef
ist zu sagen, dass dieser wenn-Anweisung ist nicht vollständig ("funktional" oder jede andere Art) entspricht dem ternärer operator, weil die ganzen if/else-Anweisung nicht bewerten etwas. Sehenxpepermint
's Antwort weiter unten.