搜尋

首頁  >  問答  >  主體

php - if或者switch的选择

我要做一个查询订单的接口,比如 :
$r_type 可能为1234这四个值 1:食品 2:水果 3:香烟 4:酒水
$f_type 可能为12两个值 1:我购买的 2:我要卖的
分别对应8个数据表

怎么在接受这两个数据时确定数据表,if 或者 switch套switch,哪个方法的效率更高一点?或者有没有其他更高效的方法?

PHP中文网PHP中文网2846 天前787

全部回覆(4)我來回復

  • ringa_lee

    ringa_lee2017-04-10 18:02:16

    拙见:
    反过来 根据 $f_type 确认 $r_type switch

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-10 18:02:16

    可变函数
    $r_type()。直接这样调用。
    然后定义函数。function 1(){} function 2(){} function 3(){} function 4(){}

    回覆
    0
  • 怪我咯

    怪我咯2017-04-10 18:02:16

    第一种情况:

    按照语义分析的话,四种情况是并行的,可以用switch来表示四种分支

    第二种情况:

    买和卖是两种相对的状态,对立或者相对的两种情况用if则会表示方便.
    
    拙见,如果在性能上考虑两个情况,我不知道....

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-10 18:02:16

    最差的情况, 你的表名毫无规律。

    $tableMap = array(
      '1-1' => '我购买的-食品',
      '1-2' => '我购买的-水果',
      '1-3' => '我购买的-香烟',
      '1-4' => '我购买的-酒水',
      '2-1' => '我要买的-食品',
      '2-2' => '我要买的-水果',
      '2-3' => '我要买的-香烟',
      '2-4' => '我要买的-酒水',
    );
    $tableName = $tableMap["{$f_type}-{$r_type}"];

    好点的情况, 表名格式为(我要买的|我购买的)_(食品|水果|香烟|酒水)

    $actionMap = array(1=>'我购买的',2=>'我要买的');
    $catMap = array(1=>'食品',2=>'水果', 3=>'香烟', 4=>'酒水');
    $tableName = $actionMap[$f_type].'_'.$catMap[$r_type];

    最好的情况,我看懂了题主的意思~~~
    总之, 我的宗旨是少用if,不用switch是我的宗旨~~~

    回覆
    0
  • 取消回覆