0
我重构一些现有的代码中使用的switch-case语句A和B之间它转换,它看起来像这样:更换开关-case语句与表驱动方式
<?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');
...
}
}
而且它有太多的情况下, ,这导致了大量的代码,现在,我想用table driven approach来做到这一点,但问题是,当我为string2num()
创建表时:$table = array('AB' => 1, 'CD' => 2, 'GH' => 2, 'EF' => 3, ...);
,我无法重用num2String()
中的表(我的意思是,array_flip($table)
,然后使用它),因为$table
中的重复值在翻转时将成为唯一的一个键。我知道我可以用两张桌子做到这一点,有人有更好的解决方案?
谢谢,从未使用'array_keys()'之前:) – jfly 2014-10-31 01:59:05