restituisce un approccio variabile
-
07-07-2019 - |
Domanda
Ok, ho dieci variabili ma è necessario impostarne una, ma devo verificare ciascuno dei valori fino a quando non viene impostato uno. Sto facendo un'istruzione SWITCH / CASE ma non sono sicuro che questo sia l'approccio migliore perché non vedo come posso restituire solo la variabile che devo impostare.
$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;
}
Sto complicando le cose ???
Soluzione
Penso che ciò di cui hai bisogno qui sia l'array $ GLOBALS. Ad esempio, se si assegna $ GLOBALS ['var_1'] = 1, quando si ritorna dalla funzione, la variabile $ var_1 verrà impostata su 1.
Altri suggerimenti
Non è possibile accedere alle variabili dichiarate nella funzione dall'esterno. Ma puoi usare la parola chiave global
per accedere alle variabili globali nella tua funzione. Ma non penso proprio che sia quello che vuoi davvero fare. Potresti voler restituire una variabile variabile o una riferimento .
// 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'
È difficile capire cosa vuoi ottenere, ma come lo vedo, scarichi il tuo $ var_array e vedrai qualcosa come
Key: update_var_1 VALUE: 1
E vuoi aggiornare la variabile $ var_1 in base a quel nome?
Qualcosa del genere, usando le " variabili variabili " funzionerebbe: per prima cosa devi derivare il nome della variabile
$varname=str_replace("update_", "", $key);
Quindi puoi assegnargli il valore
$varname=$value
Sei tu a impostare la variabile in primo luogo? Perché a quel punto sai quale è, e potresti restituire qualche indicazione su quale variabile è stata impostata, invece di restituire un "puzzle". al codice che lo ha chiamato.