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