到目前为止,我编写了这段代码来测试逻辑(此时布局并不重要):
$count = $_GET['zahl'];
$c1 = $count / 3;
$c2 = ceil($c1);
for($i=0; $i < $c2; $i++){
echo "".$i."<br>";
}
echo "<hr>";
for($i=$c2; $i <($c2 * 2); $i++){
echo "".$i."<br>";}
echo "<hr>";
for($i=($c2 * 2); $i <$count; $i++){
echo "".$i."<br>";}
工作原理: 把3,6,9 ......放得很好。等于列。 举例八,它也很好用。它在第一个中产生3个,在第二个中产生3个,在最后一个中产生2个。 以7为例,它不起作用。它使3,3,1而不是3,2,2。
到目前为止我应该如何更改代码,如7,10,13等数字正在工作?
编辑:目标是获得3,2,2或4,3,3等等。
答案 0 :(得分:0)
怎么样:
$count = $_GET['zahl'];
$c1 = ceil($count / 3);
$rem = $count - $c1;
$c2 = ceil($rem / 2);
$c3 = floor($rem / 2);
for($i=0; $i < $c1; $i++){
echo "".$i."<br>";
}
echo "<hr>";
for($i=$c1; $i < ($c1 + $c2); $i++){
echo "".$i."<br>";}
echo "<hr>";
for($i=($c1 + $c2); $i <$count; $i++){
echo "".$i."<br>";
}
将计数除以3,存储在c1中。计算剩余的字段,存储在rem中。将余数除以2,将该数字的小区存储在c2中,将该小区存储在c3中。
顺便说一下。我不熟悉这种语法,所以这可能无法正常工作。
答案 1 :(得分:0)
另一种可能的解决方案:
$count = $_GET['zahl'];
$c1 = $count / 3;
$c2 = ceil($c1);
$rest = $count - $c2 ;
for($i=0; $i < $c2; $i++){
echo "".$i."<br>";
}
echo "<hr>";
for($i=$c2; $i <$c2 + ceil($rest/2); $i++){
echo "".$i."<br>";}
echo "<hr>";
for($i=($c2 + ceil($rest/2)); $i <$count; $i++){
echo "".$i."<br>";}
答案 2 :(得分:0)
你可以试试这个。
$count = $_GET['zahl'];
$c1=$c2=$c3=floor($count / 3);
$reminder=($count%3);
if($reminder==1)
{
$c1++;
}
elseif($reminder==2)
{
$c1++;
$c2++;
}
for($i=0;$i<$c1;$i++)
{
echo "".$i."<br>";
}
echo "<hr>";
for($i=$c1;$i<($c1+$c2);$i++)
{
echo "".$i."<br>";
}
echo "<hr>";
for($i=($c1+$c2);$i<($c1+$c2+$c3);$i++)
{
echo "".$i."<br>";
}
即使你可以使用一个循环来制作这3个循环。就像这个
for($i=0;$i<$count;$i++)
{
if(($i==$c1)||($i==($c1+$c2)))
{
echo "<hr>";
}
echo "".$i."<br>";
}
注意强>
您可以echo $i."<br>";
代替echo "".$i."<br>";