0

该原理类似于对表格进行斑马条纹处理,但并不完全相同,因此我很难找到解决方案/思考如何做到这一点。

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

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

  1. 将前四个输出为 1 行 4 列
  2. 接下来的三个成1行3列
  3. 最后四成1行4列

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

任何帮助表示赞赏!

4

2 回答 2

0

测试和工作。换行符可以根据您的需要重新定位。

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++;
    }
}
于 2013-12-05T20:23:43.963 回答
0

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

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);
于 2013-12-05T20:00:51.250 回答