2013-10-08 69 views
0

想象一下:PHP:基於陣列的內容變量

$array(type=>$user_input); 

$level1 = "arbitrary 1"; 
$level2 = "arbitarty 2"; 

if($type && $type != ''){ 
     switch ($type){ 
      case 'level1': 
       $levels = $level1; 
       break; 
      case 'level2': 
       $levels = $level2; 
       break; 
      } 
    }else{ 
     $levels = $level1 . $level2; 
    } 

這工作,但似乎重複的 - 尤其是10,20級......

我將如何做到這一點:

$array(type=>$user_input); 

$level1 = "arbitrary 1"; 
$level2 = "arbitarty 2"; 

if($type && $type != ''){ 
     $levels = (use the type contained in the variable named by the user_input) 
    }else{ 
     $levels = $level1 . $level2; 
    } 

由於我失去了用適當的英語說話的能力,我希望我的代碼解釋不言自明。

+1

'$ array(type => $ user_input);'對我來說絕對沒有意義......這是幹什麼用的? – Pevara

+0

數組由其他代碼構建,其中包含level1,level2,level3等的「用戶輸入」... – OliverSamson43

回答

1

你可以使用variable variables

$level = $$type; 
+0

太棒了。我只是在尋找變量...什麼是兔子洞;) – OliverSamson43

+0

的確如此。使用它時確實需要小心,以確保'$ type'中沒有意外的值,這就是爲什麼像其他人一樣使用數組可能是更好的方法。 – TheWolf

0

不知道你想什麼,在這裏實現,但如果我理解正確的話,我可能會做這樣的事情:使用$$variable

$levelList = array(
'level1' => "arbitrary 1", 
'level2' => "arbitarty 2" 
); 

if ($type){ 
    $levels = isset($levelList[$type]) ? $levelList[$type] : implode('', $levelList); 
} 

語法確實是有效的,但對我來說似乎有點骯髒,而且這裏的數組看起來恰恰更合適這裏是否合適呢?

0

會不會更有意義使用數組?

$levels = array('Level 1', 'Level 2', 'Level 3'); 
$key = array_search($type, $levels); 
$result = $levels[$key];