2016-11-10 1 views
0

Ich möchte sehen, ob es eine vereinfachte Möglichkeit gibt, eine if-Anweisung zu machen, die mehrere Bedingungen prüft, wo sie Daten aus derselben Funktion verwendet.Definieren und überprüfen Sie die Variable in if-Anweisung

if($class->function($id) && $class->function($id)['key'] > 0) 
{ 
    //Do something... 
} 

Das Problem hier sind wir machen 2 Datenbankaufrufe, die die gleichen Daten abrufen. Eine offensichtliche Lösung ist dabei die folgende:

$classVariable = $class->function($id); 
if($classVariable && $classVariable['key'] > 0) 
{ 
    //Do something... 
} 

Meine Frage spezifisch ist, kann ich den gleichen Effekt erzielen alle innerhalb der if Aussage? Zum Beispiel (das wird nicht funktionieren):

if($classVariable = $class->function($id) && $classVariable['key'] > 0 
{ 
    //Do something... 
} 

Ist das möglich, und gibt es eine bevorzugte Möglichkeit, dies zu tun? Es scheint mir, dass das Definieren und Verwenden desselben in der gleichen Anweisung sauberer Code wäre ...

+2

Verwendung zeigen '() 'um die Aufgabe und es wird gut funktionieren. –

+1

Es sollte angemerkt werden, dass, während Sie es auf diese Weise tun können, es nicht der empfohlene Weg ist. Sie sollten die Variable vor der if-Anweisung deklarieren. Aber es ist dein Code und du kannst es gerne tun, wie du willst :) – Kenyon

+0

Das funktioniert. Weiß jemand, ob es eine Präferenz gibt zwischen der Definition zuerst, dann der 'if' Anweisung oder der Definition innerhalb der' if' Anweisung? Edit: Kenyon geschrieben, während ich fragte. Vielen Dank! :) –

Antwort

1

Wie Niet sagte, die Verwendung von Klammern() um die $ classVariable Zuweisung und die Dinge sollten funktionieren.

(Ich wollte nur dies als eine Antwort schreiben, anstatt ein Kommentar, so dass die Frage geklärt wird, sorry Niet)

von OP Edited Antwort in Code ...

if(($classVariable = $class->function($id)) && $classVariable['key'] > 0) 
{ 
    //Do something... 
} 
+1

ham out deine Antwort ein bisschen mehr durch die Aufnahme, wie es mit den Klammern hinzugefügt aussieht. – pancho018

+0

@ pancho018 - Ich habe es in –

+0

ein weiteres 34 rep zu gehen und Sie können auch kommentieren ;-) genau wie Niet. Gute/bessere Antworten zu schreiben zieht (positive) Stimmen an, übrigens. http://stackoverflow.com/help/how-to-answer –

Verwandte Themen