这是正确的做法吗?

时间:2021-05-09 21:05:01

标签: php lookup-tables

我有这个功能,可以输入几个值。我是这样做的:

$alias = 11;
$row = ceil($alias / 8);
            switch ($row)
            {
                case 1:
                    return $alias + 10;
                case 2:
                    return $alias + 12;
                case 3:
                    return $alias + 14;
                case 4:
                    return $alias + 16;
                case 5:
                    return $alias + 18;
                case 6:
                    return $alias + 20;
                case 7:
                    return $alias + 22;
                default:

                break;
            }

我认为有更好的方法来做到这一点

2 个答案:

答案 0 :(得分:2)

你可以用数学来解决这个问题。

return $alias + 10 + ((ceil($alias / 8)-1) * 2)

答案 1 :(得分:1)

如果你仔细看,你会发现有一个公式:

$alias = 11;
$row = ceil($alias / 8);
switch ($row)
{
    case 1:
        return $alias + 10;//(1*2-2)+10 = 0+10 = 10
    case 2:
        return $alias + 12;//(2*2-2)+10 = (4-2)+10 = 2+10 = 12
    case 3:
        return $alias + 14;//(3*2-2)+10 = (6-2)+10 = 4+10 = 14
    case 4:
        return $alias + 16;//(4*2-2)+10 = (8-2)+10 = 6+10 = 16
    case 5:
        return $alias + 18;//.
    case 6:
        return $alias + 20;//..
    case 7:
        return $alias + 22;//(7*2-2)+10 = (14-2)+10 = 12+10 = 22
    default:

    break;
}

所以按照公式($row*2-2)+10,然后 你的 switch 会变成一个简单的 one 表达式:

return $alias + ($row*2-2)+10;