2016-11-22 3 views
2

Ist es möglich, das Ergebnis eines if mit einer OR-Anweisung als Variable für eine Funktion zu verwenden?PHP verwenden Ergebnis als Variable

Als Beispiel:

$a = true; 
$b = false; 

if ($a || $b) { 
    $this->functionCall($a) 
} 

Ein anderes Beispiel:

$a = false; 
$b = true; 

if ($a || $b) { 
    $this->functionCall($b) 
} 

Dritte und letzte exmaple:

$a = true; 
$b = true; 

if ($a || $b) { 
    $this->functionCall($a, $b) 
} 

Also muss ich erkennen, welche Variable wahr ist und es als ein Pass Parameter. Ist das überhaupt möglich?

Jede Hilfe ist willkommen!

Vielen Dank im Voraus

+1

Stimmt etwas nicht mit Standard 'if() {} else if() {} else {} 'Syntax? –

+0

In Ihrem ersten und zweiten Beispiel ist der Wert, den Sie an die Funktion übergeben, 'true', ist es wirklich wichtig, ob es' $ a' oder '$ b' ist? – roberto06

+0

@ roberto06 yeah es tut :) –

Antwort

2

PHP 5.6+ Version, filtert die fälschlicherweise Werte aus (können Sie einen Rückruf Pass für verschiedene Kontrollen array_filter) und die mit dem Splat-Operator zu verwenden.

$params = array_filter([$a, $b]); 
$this->callFunction(...$params); 

Keine Notwendigkeit für IF-Prüfungen und verwirrend in IF-Zuweisungen.

Erkunden Sie Variadic functions und Argument entpacken.

+0

Hinweis, Sie benötigen die richtige Anzahl von Parametern in Ihrer CallFunction, wieder können Sie 'function callFunction (... $ params) {}' und untersuchen das Array der Parameter. –

3

Ich würde in einem Zwei-Parameter-Funktion, um die Logik Bit tun, wenn ich du wäre, als solche:

function myFunc($a = false, $b = false) { 
    if ($a == true) 
     echo 'a'; 
    if ($b == true) 
     echo 'b'; 
} 

myFunc(); // echoes nothing 

$a = true; 
$b = false; 
myFunc($a, $b); // echoes 'a' 

$a = false; 
$b = true; 
myFunc($a, $b); // echoes 'b' 

$a = true; 
$b = true; 
myFunc($a, $b); // echoes 'ab'