返回变量方法

时间:2009-09-15 16:03:27

标签: php logic switch-statement

好的我有十个变量但需要设置一个,但我需要检查每个值,直到设置一个。我正在做一个SWITCH / CASE语句,但我不确定这是否是最好的方法,因为我不知道如何只返回我需要设置的变量。

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

我是不是太复杂了?

4 个答案:

答案 0 :(得分:1)

我认为你需要的是$ GLOBALS数组。例如,如果您指定$ GLOBALS ['var_1'] = 1,那么当您从函数返回时,变量$ var_1将设置为1.

答案 1 :(得分:0)

您无法从外部访问在函数中声明的变量。但您可以使用关键字global来访问函数中的全局变量。但我真的不认为这是你真正想做的事情。您可能要么返回variable variablereference

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

答案 2 :(得分:0)

很难理解你想要实现的目标,但是正如我所看到的那样,你将你的$ var_array转储出去,你会看到像

这样的东西。
Key: update_var_1 VALUE: 1

您想根据该名称更新变量$ var_1吗?

这样的事情,使用PHP的"variable variables"会起作用 - 首先,你需要派生变量的名称

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

然后你可以为它分配值

$$varname=$value

答案 3 :(得分:0)

您是第一个设置变量的人吗?因为在那一点上你知道它是哪一个,你可以传回一些关于设置哪个变量的指示,而不是给调用它的代码返回一个“谜题”。