![](/img/trans.png)
[英]Which is more efficient in PHP, explode() from a database of nested switch case
[英]More efficient switch case?
我一直在寻找这个问题,但也许我没有使用正确的术语。 这似乎是检查3个字符串数组的一种非常低效的方法。
我正在查看数组中的每个项目,并分别检查一个值。 有没有更短的方法来达到相同的结果?
$j = get_field('loan_types');
$business = '<i class="fa fa-suitcase"></i>';
$property = '<i class="fa fa-home"></i>';
$personal = '<i class="fa fa-user"></i>';
switch ($j[0]) {
case 'Business':
echo $business;
break;
case 'Personal':
echo $personal;
break;
case 'Property':
echo $property;
break;
}
switch ($j[1]) {
case 'Business':
echo $business;
break;
case 'Personal':
echo $personal;
break;
case 'Property':
echo $property;
break;
}
switch ($j[2]) {
case 'Business':
echo $business;
break;
case 'Personal':
echo $personal;
break;
case 'Property':
echo $property;
break;
}
由于$j
是一个数组,因此可以使用foreach循环,如下所示:
$j = get_field('loan_types');
$business = '<i class="fa fa-suitcase"></i>';
$property = '<i class="fa fa-home"></i>';
$personal = '<i class="fa fa-user"></i>';
foreach ($j as $loan_field) {
switch ($loan_field) {
case 'Business':
echo $business;
break;
case 'Personal':
echo $personal;
break;
case 'Property':
echo $property;
break;
}
}
编辑:如果您真的很喜欢冒险,请参阅CBroe的绝佳答案!
您如何取消以...开头的整个switch
语句?
如果将要输出的值放在关联数组中,并使用借贷类型作为键,则可以将其缩短为
$j = get_field('loan_types');
$icons = array(
'Business' => '<i class="fa fa-suitcase"></i>',
'Property' => '<i class="fa fa-home"></i>',
'Personal' => '<i class="fa fa-user"></i>',
);
foreach($j as $loan_field) {
if(isset($icons[$loan_field])) {
echo $icons[$loan_field];
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.