使用for()*逻辑事物创建“数字网格”*

时间:2015-04-16 20:01:18

标签: php

我有点特别的问题。我想创建一个动态3列表。我用for元素玩了一点点,因为后来我想从mysql中获取数据。

到目前为止,我编写了这段代码来测试逻辑(此时布局并不重要):

$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等等。

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>";