0

我有一个(php)数组,有 1、2、3、4、5 或 6 个结果。我想在不同的情况下将它们显示如下:

1 个结果:

[result 1]

2 个结果:

[result 1]  [result 2]

3 个结果:

[result 1]  [result 3]
[result 2]

4 个结果:

[result 1]  [result 3]
[result 2]  [result 4]

5 个结果:

[result 1]  [result 4]
[result 2]  [result 5]
[result 3]

6 个结果:

[result 1]  [result 4]
[result 2]  [result 5]
[result 3]  [result 6]

如果我可以只使用 CSS(当然不能使用表格),那就太好了,所以正确的顺序保留在源中,但显示如上。否则我认为我需要一些奇怪的 PHP 循环才能在我的屏幕上以正确的顺序获得这些结果。有人知道怎么做吗?提前致谢!

4

3 回答 3

0
$array = array( 1, 2, 3, 4, 5, 6, 7 );

$number_of_columns = floatval(2.0); // float to make the below ceil work
$number_of_items = count( $array );
$items_per_column = ceil( $number_of_items / $number_of_columns );
$current_column = 0;

for ( $i = 0; $i < $number_of_items; $i++ ){

    if ( $i % items_per_column == 0 ){ 
        $current_column++;
    }

    echo $i, ' -> ', $current_column, '<br />';
}   
于 2012-04-05T09:16:26.343 回答
0

它猜测不可能只用 css 做某事。您必须将数组一分为二,并将前半部分显示到第一列,后半部分显示到第二列。应该不是很辛苦吧?

于 2012-04-05T09:08:50.053 回答
0

就像是

$out = "<table><tbody>";
for ($i = 0; $i < count($array); $i++){
    $el = $array[$i];
    if(($i % 2) === 0){
        $out .= '<tr>';
    }
    $out .= "<td>$el</td>";
    //Handlethe case that this is the last iteration and 
    //the elements of the array are odd
    if((($i % 2) === 1) && (($i + 1) === count($array))){
        $out .= "<td></td></tr>";
    }elseif(($i % 2) === 1){
        $out .= "</tr>";
    }
}

$out .= "</tbody></table>";
于 2012-04-05T09:11:26.407 回答