繁体   English   中英

更有效的开关盒?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM