Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自动化PHP开关语句_Php - Fatal编程技术网

自动化PHP开关语句

自动化PHP开关语句,php,Php,我正在用PHP生成某些项目。长话短说-我有漂亮的工具提示保存到变量中的对象。我已经生成了100多个项目。所以我有一个巨大的html下拉列表选择所有的项目。当用户选择所需的项目时,他会转到“生成”按钮。在后端,我获取响应,并希望返回客户选择的项目。我正在考虑一个switch语句,它对应于html select的name值,并将其与变量中的适当项相匹配。经过测试,它工作得很好。然而,如果我想包括我所有的项目,这将意味着数以百计的开关情况。如果开关是我唯一可行的选择,我很好,但是有没有办法自动创建开关

我正在用PHP生成某些项目。长话短说-我有漂亮的工具提示保存到变量中的对象。我已经生成了100多个项目。所以我有一个巨大的html下拉列表选择所有的项目。当用户选择所需的项目时,他会转到“生成”按钮。在后端,我获取响应,并希望返回客户选择的项目。我正在考虑一个switch语句,它对应于html select的name值,并将其与变量中的适当项相匹配。经过测试,它工作得很好。然而,如果我想包括我所有的项目,这将意味着数以百计的开关情况。如果开关是我唯一可行的选择,我很好,但是有没有办法自动创建开关案例?否则,我将需要去手动写下所有的开关情况

switch ($helm){
    case "harle":
        $helm = $random_harle;
        break;
    case "eth_harle":
        $helm = $random_harle_eth;
        break;
    case "perfect_harle":
        $helm = $perfect_harle;
        break;
    case "perfect_harle_eth":
        $helm = $perfect_harle_eth;
        break;
    // and a 100+ more of these
    default:
    $helm = "None";
}

您可以将所有项目映射到一个数组中

$myitems = ["harle" => $random_harle, 
  .....
];
然后使用

foreach ($myitems as $key => $value) 
{ 
    if ($key == $helm) 
       return $value;
}
return "None";
这将使用$key测试给定的$helm。如果存在匹配项,则返回$value

循环不匹配后,可以返回默认值

此外,正如CBroe所建议的那样,更简短的版本将是

if (array_key_exists($helm, $myitems))
   return $myitems[$helm];
return "None";

您不需要自己在数组上循环,只需使用isset或array_key_exists检查给定密钥的条目是否存在。请给我一点时间尝试一下,看看我是否能够成功。Thansk的快速响应为什么是foreach?只是要指出,如果设置$myitems[$helm]返回$myitems[$helm];不返回任何值;比数组_键快_exists@Djongov那是因为我在输入array\u key\u exists调用时出错了。我用更正更新了我的答案。