PHP-交替行&;列输出


PHP - Alternating rows & column output

原理类似于对表进行斑马线分割,但这并不完全相同,所以我很难找到解决方案/思考如何做到这一点。

我正在尝试替换每行的列数。每奇数行将有4列,每偶数行将有3列。

如果我的查询返回11条记录,我想:

  1. 将前四个输出到1行4列
  2. 下三个成1行3列
  3. 最后四个成1行,4列

我在phpfiddle上发布了一个示例数组和标记,以帮助说明我的目标:http://phpfiddle.org/main/code/h9r-hj1

感谢您的帮助!

测试并工作。新线可以根据您的需要重新定位。

http://codepad.org/O1BFebhC

<?php
$items[334] = array( 'name' => 'L. Dalton', 'id' => 3456921 ); 
$items[234] = array( 'name' => 'B. Harris', 'id' => 563456 ); 
$items[212] = array( 'name' => 'R. Fox', 'id' => 6879879 ); 
$items[654] = array( 'name' => 'T. Marcus', 'id' => 14234 ); 
$items[865] = array( 'name' => 'M. Kitsap', 'id' => 79087 ); 
$items[875] = array( 'name' => 'P. McDonald', 'id' => 2454662 ); 
$items[675] = array( 'name' => 'J. Harvey', 'id' => 234545 ); 
$items[343] = array( 'name' => 'G. Steinmetz', 'id' => 8578768 ); 
$items[167] = array( 'name' => 'R. Stanley', 'id' => 34234 ); 
$items[899] = array( 'name' => 'C. Morris', 'id' => 546378 ); 
$items[932] = array( 'name' => 'S. Tan', 'id' => 578758 ); 

$counter = 1;
$limit = 4;
foreach($items as $item)
{
    if($limit == 4 && $counter == 1)
    {
        ?><div class="four-up"><?php echo "'n";
    }
    else if($limit == 3 && $counter == 1)
    {
        ?><div class="three-up"><?php echo "'n";
    }
    ?><div class="col col-<?php echo $counter; ?>"> <?php echo $item['name']; ?> <br /><?php echo $item['id']; ?></div><?php echo "'n";
    if($limit == $counter)
    {
        ?></div><?php echo "'n";
        $counter = 1;
        if($limit == 3) $limit = 4;
        else if($limit == 4) $limit = 3;
    }
    else
    {
        $counter++;
    }
}

未经测试的代码,但它应该给出一个想法:

for ( $c=0 ,  $cnt=count($array) ,  $m=4 ; $c<$cnt ; )  // used like a while()
{
    echo '<div class="', ($m==4 ? 'four' : 'three' ) ,'-up">';
    for ( $cm=$cnt+$m ; $c<$cm ; ++$c)
    {
      // output row 
    }
    unset($cm);
    echo '</div>';
    $m = ( $m == 4 ? 3 : 4 );
}
unset($c, $m , $cnt);