我正在重构一些使用 switch-case 语句在 A 和 B 之间转换的现有代码,它看起来像这样:
<?php
function string2num($s)
{
switch($s){
case 'AB':
return 1;
case 'CD':
case 'GH':
return 2;
case 'EF':
return 3;
...
}
}
function num2String($n)
{
switch($n){
case 1:
return 'AB';
case 2:
return array('CD', 'GH');
...
}
}
而且它有太多的情况,导致大量的代码,现在,我想用表驱动的方法来做这件事,但问题是,当我为string2num()
:构建一个表时$table = array('AB' => 1, 'CD' => 2, 'GH' => 2, 'EF' => 3, ...);
,我不能在num2String()
(I意思是array_flip($table)
,,然后使用它),因为在翻转时重复值$table
将仅成为一个键。我知道我可以用 2 张桌子做到这一点,有人有更好的解决方案吗?