我有这个功能,可以输入几个值。我是这样做的:
$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;
}
我认为有更好的方法来做到这一点
答案 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;