2016-11-08 12 views
2

zu überprüfen, ob alle gesetztWie überprüft man, ob Variablen gesetzt sind?

if(
    isset($var1) && 
    isset($var2) && 
    isset($var3) 
){} 

als

if(isset($var1,$var2,$var3)){} 

neu geschrieben werden, aber was ist die Syntax für wenn jede eingestellt sind?

if(
    isset($var1) || 
    isset($var2) || 
    isset($var3) 
){} 

Sieht hässlich aus; Gibt es einen besseren Weg dies zu schreiben?

+0

Ich nehme an, es gibt keinen Weg. –

+1

Mit dem neuen php7-Operator: 'if ($ var1 ?? $ var2 ?? $ var3 ?? false)' –

+0

@SamDufel es sei denn '$ var1 === false' –

Antwort

2

Sie müssen Strings anstelle der Variablen übergeben, sondern auch für Spaß:

if(compact('var1', 'var2', 'var3')) { 
    echo 'one or more is set'; 
} else { 
    echo 'none are set'; 
} 
1

Ich denke, man könnte eine einfache Funktion schreiben, aber es gibt wahrscheinlich einen saubereren Weg.

function anyset(...$vars){ 
    foreach($vars as $var){ 
     if(isset($var)){ 
      return true; 
     } 
    } 
    return false; 
} 

if(anyset($var1,$var2,$var3)){} 
+1

Nur eine Randnotiz: Wenn es nicht um Checkboxen und/oder Radios geht, sondern um tatsächliche Eingaben, ist es am besten, 'empty()' zu verwenden. anstelle von 'isset()' Diese Frage und Antwort http://stackoverflow.com/questions/8236354/php-is-null-or-empty kann dazu beitragen, etwas Licht auf diese, vor allem diese Antwort in dort http: // stackoverflow. com/a/15607549/1415724 (nachdem du deine Bearbeitung mit Nullen gesehen hast). –

+0

Wenn 'isset()' jedoch die Voraussetzung ist, dann wird die gleiche Syntax für 'empty()' wie für 'if (isset ($ var1, $ var2, $ var3)) 'leider nicht funktionieren. Wäre aber nett gewesen und hätte es viel einfacher gemacht. –

+0

@ Fred-i-hey! Danke für den Hinweis, und [ich erinnere mich] (http://stackoverflow.com/posts/comments/62693758) :) –

Verwandte Themen