voltar abordagem variável
-
07-07-2019 - |
Pergunta
Ok eu tenho variáveis ??dez, mas é preciso ser definidos, mas eu preciso verificar para cada um dos valores até que um está definido. Eu estou fazendo uma declaração switch / case, mas eu não tenho certeza se esta é a melhor abordagem, porque eu não vejo como eu possa retornar somente a variável que eu preciso definir.
$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;
}
Am I sobre complicar as coisas ???
Solução
Eu acho que você precisa aqui é a matriz $ GLOBALS. Por exemplo, se você atribuir $ GLOBALS [ 'VAR_1'] = 1, então quando você retornar da função, a US $ VAR_1 variável será definido como 1.
Outras dicas
Você não pode variáveis ??de acesso que você declarar na função de fora. Mas você pode usar a palavra-chave global
para acessar variáveis ??globais em sua função . Mas eu realmente não acho que isso é o que você realmente quer fazer. Você pode tanto deseja retornar um variável variável ou uma referência .
// 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'
É difícil entender o que você quer alcançar, mas como eu vê-lo, você despejar seu $ var_array e você verá algo como
Key: update_var_1 VALUE: 1
E você quiser atualizar a variável $ VAR_1 com base nesse nome?
Algo como este, usando "variáveis ??variáveis" do PHP iria funcionar - em primeiro lugar, você precisa para obter o nome da variável
$varname=str_replace("update_", "", $key);
Em seguida, você pode atribuir o valor a ele
$$varname=$value
Você é aquele definindo a variável em primeiro lugar? Porque naquele ponto, você sabe qual é, e você poderia passar de volta alguma indicação a respeito de qual variável foi definida, em vez de retornar um "puzzle" para o código que chamou.