Hat PHP eine Entsprechung zum Operator || =?

7

Ich möchte nur eine Variable zuweisen, die noch nicht zugewiesen wurde. Was ist die PHP-Methode, um Folgendes zu tun?

%Vor%

Ich habe die Standardoperatoren und die is_null Funktion, aber es scheint keine einfache Möglichkeit zu sein, die obige Operation auszuführen.

    
brianegge 19.07.2009, 08:17
quelle

6 Antworten

17

isset() ist der übliche Weg, dies zu tun:

%Vor%

Hinweis: Sie können null einer Variablen zuweisen und sie wird zugewiesen. Dies führt zu unterschiedlichen Ergebnissen mit isset() und is_null() , also müssen Sie es sein klar, was Sie mit "nicht zugewiesen" meinen. Siehe Null vssetset () . Dies ist auch ein Fall, in dem Sie vorsichtig sein müssen, wenn Sie eine automatische Typkonvertierung durchführen, dh die !=/== oder ===/!== abhängig vom gewünschten Ergebnis verwenden.

Sie können auch eine boolesche Abkürzung dafür verwenden (was der Operator Perl ||= ist). Ab PHP 5.2.x gibt es keinen Operator wie Sie sprechen. In Perl:

%Vor%

entspricht:

%Vor%

Sie können die zweite Form in PHP machen, aber PHP hat einige funky Regeln für Typ Jonglieren . Siehe In boolean konvertieren :

  

Bei der Umwandlung in boolean wird die   Folgende Werte gelten als FALSE:

     

Jeder andere Wert wird als TRUE (einschließlich einer Ressource) betrachtet.

Also nachher: ​​

%Vor%

$ a wäre gleich 5. Ebenso:

%Vor%

Sie müssen auf diese Dinge aufpassen.

    
cletus 19.07.2009, 08:20
quelle
14
%Vor%     
erenon 19.07.2009 09:39
quelle
5

Ab PHP 5.3 können Sie verwenden:

%Vor%     
troelskn 19.07.2009 14:29
quelle
1

Ich habe diese Funktion entwickelt, die den Nebeneffekt hat, nutzlose undefinierte Variablenmeldungen zu schließen. Es ist nah genug an Javascript für mich:

%Vor%     
flussence 19.07.2009 14:49
quelle
0

Wie wäre es mit ein paar verschachtelten ternären Operatoren?

Für mich ist es der einfachste Weg, mit Ihrem Problem umzugehen. Und da Sie verschachtelte ternäre Operatoren verwenden können, sollten Sie in der Lage sein, bei Bedarf weitere Überprüfungen hinzuzufügen.

%Vor%

Es ist fast die gleiche Menge Code und es sollte funktionieren .. es sei denn, ich habe dich missverstanden. Wenn das der Fall ist, tut es mir leid.

Im Vergleich mit dem ursprünglichen Code, den Sie als Beispiel angegeben haben, ist die Länge fast gleich:

%Vor%

Verschachtelte ternäre Operatoren können ein wenig verwirrend sein, also haben Sie es hier mit Kommentaren:

%Vor%     
MarioRicalde 19.07.2009 08:57
quelle
0

Ich habe es noch nicht ausprobiert, aber wollte mit PECL Operator spielen Alter.

    
Question Mark 19.07.2009 11:44
quelle

Tags und Links