2009-09-15 6 views
0

Ok J'ai dix variables mais il faut en définir une, mais j'ai besoin de vérifier chacune des valeurs jusqu'à ce que l'une d'entre elles soit définie. Je fais une instruction SWITCH/CASE mais je ne suis pas sûr si c'est la meilleure approche parce que je ne vois pas comment je peux retourner seulement la variable dont j'ai besoin.retour approche variable

$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 les choses ???

Répondre

1

Je pense que Vous avez besoin ici 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.

+0

Merci, je pense que c'est l'approche la plus simple –

0

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 dans votre fonction. Mais je ne pense vraiment pas que c'est ce que vous voulez vraiment faire. Vous pouvez renvoyer un variable variable ou un reference.

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

Je pense que c'est ce que je cherche, laissez-moi tester; // Exemple de variable variable: $ var_1 = 'test'; $ a = 'var_1'; echo $$ a; // sort 'test' –

0

Il est difficile de comprendre ce que vous voulez atteindre, mais comme je le vois, 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 basé sur ce nom?

Quelque chose comme ça, en utilisant "variable variables" de PHP fonctionnerait - d'abord, vous devez obtenir le nom de la variable

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

Ensuite, vous pouvez affecter la valeur à ce

$$varname=$value 
0

Êtes-vous celui qui définit la variable en premier lieu? Parce qu'à ce moment-là, vous savez lequel il est, et vous pourriez repasser une indication sur la variable qui a été définie, au lieu de renvoyer un "puzzle" au code qui l'a appelé.

Questions connexes