【问题标题】:More efficient switch case?更高效的开关盒?
【发布时间】:2016-03-09 15:50:51
【问题描述】:

我已经找遍了这个,但也许我没有使用正确的术语。这似乎是检查 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;
}

【问题讨论】:

标签: php switch-statement


【解决方案1】:

由于$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 的最佳答案!

【讨论】:

  • 谢谢,我从各种来源获取了 php,但从未对 foreach 做过任何事情。现在我明白了——非常有帮助!
  • 很高兴能帮上忙!
  • 如果$j也变大了,你就不需要添加任何东西了
【解决方案2】:

您如何取消整个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];
  }
}

【讨论】:

  • 很好,你的编辑打败了我。我会删除我的并链接到你的!
  • 很高兴看到替代方案,将完全取消 switch 语句。
猜你喜欢
  • 1970-01-01
  • 2023-03-16
  • 2017-03-27
  • 1970-01-01
  • 1970-01-01
  • 2020-02-15
  • 1970-01-01
  • 2017-02-08
  • 1970-01-01
相关资源
最近更新 更多