2009-09-15 22 views
0

好吧我有10個變量,但需要設置一個,但我需要檢查每個值,直到設置一個。我正在做一個SWITCH/CASE語句,但我不確定這是否是最好的方法,因爲我不知道如何只返回我需要設置的變量。return variable approach

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

我在複雜的事情?

回答

1

我想什麼你需要的是$ GLOBALS數組。例如,如果您分配$ GLOBALS ['var_1'] = 1,那麼當您從該函數返回時,變量$ var_1將被設置爲1.

+0

謝謝,我認爲這是最簡單的方法 – 2009-09-15 17:43:52

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

我認爲這是我正在尋找的,讓我測試; //變量變量示例: $ var_1 ='test'; $ a ='var_1'; echo $$ a; //輸出'test' – 2009-09-15 16:21:38

0

很難理解你想要達到的目標,但在我看來,你傾倒你的$ var_array,你會看到類似

Key: update_var_1 VALUE: 1 

而你要更新變量基於該名稱的$ var_1?

這樣的事情,使用PHP的"variable variables"會的工作 - 首先,你需要派生的變量

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

的名稱,然後您可以將值分配給它

$$varname=$value 
0

您是第一個設置變量的人嗎?因爲那時你知道它是哪一個,並且你可以傳回一些關於哪個變量被設置的指示,而不是給調用它的代碼返回一個「謎題」。

相關問題