Question

Ok, j'ai dix variables, mais il faut en définir une, mais je dois vérifier chacune des valeurs jusqu'à ce que l'une d'elles soit définie. Je fais une déclaration SWITCH / CASE mais je ne suis pas sûr que ce soit la meilleure approche car je ne vois pas comment je peux renvoyer uniquement la variable dont j'ai besoin.

$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;
}

Est-ce que je complique trop les choses ???

Était-ce utile?

La solution

Je pense que ce dont vous avez besoin ici, c'est du tableau $ GLOBALS. Par exemple, si vous affectez $ GLOBALS ['var_1'] = 1, lorsque vous revenez de la fonction, la variable $ var_1 sera définie sur 1.

Autres conseils

Vous ne pouvez pas accéder aux variables que vous déclarez dans la fonction depuis l'extérieur. Mais vous pouvez utiliser le mot clé global . pour accéder aux variables globales de votre fonction. Mais je ne pense vraiment pas que c'est ce que vous voulez réellement faire. Vous pouvez renvoyer une variable variable ou une référence .

 // 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'

Il est difficile de comprendre ce que vous voulez réaliser, mais à mon avis, vous videz votre $ var_array et vous verrez quelque chose comme

Key: update_var_1 VALUE: 1

Et vous souhaitez mettre à jour la variable $ var_1 en fonction de ce nom?

Quelque chose comme ça, en utilisant les "variables variables" de PHP fonctionnerait - vous devez d’abord dériver le nom de la variable

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

Ensuite, vous pouvez lui attribuer la valeur

$varname=$value

Êtes-vous celui qui définit la variable en premier lieu? Parce qu'à ce stade, vous savez de quoi il s'agit et vous pouvez renvoyer une indication sur la variable définie, au lieu de renvoyer un "puzzle". au code qui l'a appelé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top