PHP:基于数组内容的变量

PHP:基于数组内容的变量,php,arrays,variables,Php,Arrays,Variables,想象一下: $array(type=>$user_input); $level1 = "arbitrary 1"; $level2 = "arbitarty 2"; if( $type && $type != '' ){ switch ($type){ case 'level1': $levels = $level1; break; case

想象一下:

$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;
    }
由于我已经失去了用地道英语说话的能力,我希望我的代码解释是不言自明的。

您可以使用:


我不确定你想在这里实现什么,但如果我理解正确,我可能会这样做:

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

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

使用
$$variable
语法确实是有效的,但对我来说它似乎有点脏,而且数组在这里似乎更合适。总之,使用数组不是更有意义吗

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

$array(类型=>$user\u输入)对我来说毫无意义。。。这是用来做什么的?数组是由其他代码构建的,其中包含一个级别1、级别2、级别3等的“用户输入”…太棒了。我只是在看变量。。。多大的兔子洞啊确实如此。您在使用它时确实需要小心,以确保
$type
中没有意外值,这就是为什么使用其他人建议的数组可能是更好的方法。
$levels = array('Level 1', 'Level 2', 'Level 3'); 
$key    = array_search($type, $levels);
$result = $levels[$key];