2017-04-27 1 views
4

Hier ist der PHP-Code:ist identisch (===) in Zweig

if ($var===0) {do something} 

It "ist etwas" nur dann, wenn $var tatsächlich 0 ist (und wenn $var nicht gesetzt ist, ist es nicht, so funktioniert alles ist ok).

jedoch Zweig unterstützt nicht === Operator, und wenn ich schreibe:

{% if var==0 %}do something{% endif %} 

es „etwas tut“ die ganze Zeit (auch wenn $var nicht gesetzt ist). Um es zu beheben, schrieb ich einen solchen Code:

{% if var matches 0 %}do something{% endif %} 

Ist es eine richtige Art und Weise === Vergleich in Zweig zu tun, oder ich habe etwas falsch gemacht hier? Wenn es falsch ist, wie sollte es behoben werden?

Antwort

3

Sie müssen sich für === Vergleiche same as in Zweig verwenden:

{% set var1=0 %} 
{% set var2='0' %} 

{% if var1 is same as(0) %} 
    var1 is 0. 
{% else %} 
    var1 is not zero. 
{% endif %} 

{% if var2 is same as(0) %} 
    var2 is 0. 
{% else %} 
    var2 is not 0. 
{% endif %} 

{% if var2 is same as('0') %} 
    var2 is '0'. 
{% else %} 
    var2 is not '0'. 
{% endif %} 

Hier ist ein twigfiddle es im Betrieb zeigt:

https://twigfiddle.com/k09myb

Here is the documentation für same as auch besagt, dass es äquivalent zu ===. Hoffe das hilft dir!

+0

Danke, dieser ist sehr nützlich –

+0

Sie sind herzlich willkommen! –

2

Zweig hat nicht ===, aber es hat stattdessen same as. Siehe: https://twig.sensiolabs.org/doc/2.x/tests/sameas.html

So könnte man schreiben:

{% if var is same as(0) %}do something{% endif %} 

Schließlich Sie is defined verwenden können, um zu überprüfen, ob die Variable gesetzt ist.

+0

Danke für das "selbe wie". Ich habe darüber nachgedacht, ist auch definiert, aber es würde den Code starten, auch wenn var-Wert beispielsweise "abc" ist. –

+0

Update - Ich fand diesen Code benötigt einige Korrekturen. Wenn ich benutze ist gleich (0) - es funktioniert nicht. Es funktioniert nur, wenn ich es zu ändern, ist gleich ("0") (mit anderen Worten, Zitate scheinen "ein Muss", wenn 0 verwendet wird). –

+2

@MindaugasLi Dann ist das Problem woanders in Ihrem Code. Das Dokument sagt: * "Dies ist gleichbedeutend mit === in PHP" *. Also, wenn es mit "0" arbeitet, dann vergleichen Sie Var mit einer Zeichenkette mit einem einzelnen Zeichen, die sich sehr von der Ganzzahl "0" unterscheidet ("0 ===" 0 "" ist) immer 'falsch'). Mit anderen Worten, Sie haben '$ var' irgendwo die Zeichenfolge' "0" 'zugewiesen, von der Sie denken, dass Sie eine ganze Zahl zuweisen. – martin

Verwandte Themen