-1

我只是想就最佳解决方案提供一些意见 - 对于下面的问题有效。

例如,假设我有 6 个不同的类别。在这些类别中,您有 5 到 6 个选择。根据您在每个类别中选择的内容,会产生不同的结果。你会通过做很多 if 逻辑、数组或其他方法来解决这个问题吗?

我的想法是做 switch 语句或 if 逻辑。这是最好的方法吗?

4

1 回答 1

1

如果你做了这样的布局:

switch($cat1){
  case 1:
    switch($cat2){
      case 1:
        ...
        break;
    }
    break;
  case 2:
    ...
    break;
}

或这个:

if($cat1 == 1){
  if($cat2 == 1){
    ...
  }elseif($cat2 == 2){
    ...
  }
}elseif($cat1 == 2){
  ...
}

无论哪种方式,您都需要超过 100,000 行代码来处理逻辑。哎呀。但是,如果您有 6 个类别,每个类别有 6 个选项,那么您总共有 46,656 种不同的组合。6^6。如果您的网站连接到数据库,您可以执行类似的操作来帮助您。

$layout = $cat1 . $cat2 . $cat3 . $cat4 . $cat5 . $cat6;
//making $layout 315632 or whatever based on what they select.

在您的数据库中,您可以创建一个表,其中 id 与 $layout 匹配,并将您的显示信息保存在数据库中的行中。

 -------------------------------------
|   id   | name | make | year | model |
|--------|------|------|------|-------|
| 111111 | Aero |  S2  | 2011 | M-110 |
| 111112 | .... | .... | .... | ..... |
| 111113 | .... | .... | .... | ..... |
 -------------------------------------

然后使用简单的行查找在 php.ini 中获取结果。当然,将所有信息放入数据库需要相当长的时间,但无论如何在 php 文件中创建逻辑也需要相当长的时间。就用户实际使用您的站点而言,这将是最快的方式,并且它将使您更容易调试。

如果你不能做到这一点,下一个最快的赌注(如果你能保持一切顺利的话)是有一个 6 嵌套的 if/elseif 语句。这将为您提供的最多检查将是 36,但它可能会更少,具体取决于用户选择的内容。switch-case 也可以工作,但它们比 if/elseif 语句有点混乱。

于 2013-02-25T19:05:26.900 回答