Frage

Ok, ich habe zehn Variablen, aber man muss festgelegt werden, aber ich muss für jeden der Werte überprüfen, bis eins gesetzt ist. Ich bin eine SWITCH / CASE-Anweisung zu tun, aber ich bin mir nicht sicher, ob dies der beste Ansatz ist, weil ich sehe nicht, wie ich nur die Variable zurückgeben kann, die ich einstellen müssen.

$passed_var = 'A'; // Static

$var_array = getSelectedVar($passed_var);

foreach($var_array as $key => $val) {
    echo "Key: " . $key . " VALUE: " . $val . "<br />\n";
}

// How do I assign one of these values?
if(isset($var_1)) {
    echo "Var 1 Set<br />\n";
} elseif(isset($var_2)) {
    echo "Var 2 Set<br />\n";
} elseif(isset($var_3)) {
    echo "Var 3 Set<br />\n";
} elseif(isset($var_4)) {
    echo "Var 4 Set<br />\n";
} elseif(isset($var_5)) {
    echo "Var 5 Set<br />\n";
} elseif(isset($var_6)) {
    echo "Var 6 Set<br />\n";
} elseif(isset($var_7)) {
    echo "Var 7 Set<br />\n";
} elseif(isset($var_8)) {
    echo "Var 8 Set<br />\n";
} elseif(isset($var_9)) {
    echo "Var 9 Set<br />\n";
} elseif(isset($var_10)) {
    echo "Var 10 Set<br />\n";
}

function getSelectedVar($passed_var) {
    $passed_var = strtoupper($passed_var);
    $update_var = array();

    switch ($passed_var) {
        case 'A':
        case 'AB':
        case 'ABC':
        case 'ABCD':
            $update_var_1 = 1;
            $update_var = array('update_var_1'=>'1');
            break;
        case 'B':
        case 'BA':
            $update_var_2 = 1;
            $update_var = array('update_var_2'=>'1');
            break;
        case 'C':
            $update_var_3 =1;
            $update_var = array('update_var_3'=>'1');
            break;
        case 'D':
        case 'DA':
            $update_var_4 =1;
            $update_var = array('update_var_4'=>'1');
            break;
        case 'E':
            $update_var_5 =1;
            $update_var = array('update_var_5'=>'1');
            break;
        case 'F':
            $update_var_6 =1;
            $update_var = array('update_var_6'=>'1');
            break;
        case 'G':
            $update_var_7 = 1;
            $update_var = array('update_var_7'=>'1');
            break;
        case 'H':
        case 'HA':
        case 'HB':
            $update_var_8 =1;
            $update_var = array('update_var_8'=>'1');
            break;
        case 'I':
            $update_var_9 =1;
            $update_var = array('update_var_9'=>'1');
            break;
        case 'J':
        case 'JA':
            $update_var_10 =1;
            $update_var = array('update_var_10'=>'1');
            break;
        default:
            $update_var = '';
    }

    return $update_var;
}

Bin ich über die Dinge zu verkomplizieren ???

War es hilfreich?

Lösung

Ich denke, was Sie hier benötigen die $ GLOBALS-Array ist. Zum Beispiel, wenn Sie $ GLOBALS [ 'var_1'] = 1, dann zuweisen, wenn Sie aus der Funktion zurückkehren, wird die Variable $ var_1 auf 1 gesetzt werden.

Andere Tipps

Sie können keine Variablen zugreifen, die Sie von außen in der Funktion deklarieren. Aber Sie können das Stichwort global auf globale Variablen in Ihrer Funktion zugreifen . Aber ich glaube wirklich nicht, das ist, was Sie eigentlich tun wollen. Sie könnten entweder wollen eine variable Variable oder eine Referenz .

 // Variable variable example:
 $var_1 = 'test';
 $a = 'var_1';
 echo $$a; // outputs 'test'

 // Reference example:
 $var_1 = 'test';
 $a = &$var_1;
 $a = 'test2';
 echo $var_1; // outputs 'test2'

Es ist schwer zu verstehen, was Sie erreichen wollen, aber wie ich es sehe, Dump Sie Ihre $ var_array und Sie werden so etwas wie

siehe
Key: update_var_1 VALUE: 1

Und Sie wollen auf diesem Namen den Variable $ var_1 Basis aktualisieren?

So etwas wie diese, mit PHP "variable Variablen" funktionieren würde - erstens, müssen Sie den Namen der variablen ableiten

$varname=str_replace("update_", "", $key);

Dann können Sie den Wert zuweisen

$$varname=$value

Sind Sie der man die Variable in erster Linie Einstellung? Da zu diesem Zeitpunkt wissen Sie, eine, die es ist, und man kann einige Hinweise passieren zurück, auf die Variable gesetzt wurde, anstatt ein „Puzzle“, um den Code der Rücksendung, die sie aufgerufen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top