分类: PHP 发表时间: 2019年10月22日

标题: PHP简单技巧整理

摘要: 一个问题通常有N种解决的方式,程序员真正要做的不是实现这个问题的解,而是找出众多解中的最优解

switch与数据字典

对于如下所示的switch语句,有更优的做法

  1. $a = $b = $c = $d = 0;
  2. switch ($case) {
  3. case 'a': $a++;break;
  4. case 'b': $b++;break;
  5. case 'c': $c++;break;
  6. case 'd': $d++;break;
  7. default: throw new Exception("message");
  8. }

更优示例

  1. $dict = ['a' => 0, 'b' => 0, 'c' => 0, 'd' => 0];
  2. if (!array_key_exists($case, $dict)) {
  3. throw new Exception("message");
  4. }
  5. $dict[$case]++;

同样的,对于在switch中,执行超过一次的语句块,也可以使用这种方式优化,示例

  1. switch ($case) {
  2. case 'a':
  3. // 操作1
  4. // 操作2
  5. // 操作3
  6. break;
  7. case 'b':
  8. // 操作4
  9. // 操作5
  10. // 操作6
  11. break;
  12. }

可以转换为

  1. function f1() {
  2. // 操作1
  3. // 操作2
  4. // 操作3
  5. }
  6. function f2() {
  7. // 操作4
  8. // 操作5
  9. // 操作6
  10. }
  11. $dict = ['a' => 'f1', 'b' => 'f2']; // 如果方法是某个类的成员函数则可以用['a' => [$class, 'method'], 'b' => [$class, 'method']]
  12. call_user_func($dict[$case]);