0

1、2、3、4、5、または 6 つの結果を持つ (php) 配列があります。さまざまな状況で次のように表示したい:

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

cssだけで何かをするのは不可能だと思います。配列を 2 つに分割し、前半を最初の列に、後半を 2 列目に表示する必要があります。非常に難しいことではありませんか?

于 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 に答える
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 に答える