0

30 文字の配列があり、それらをループ処理して HTML で視覚的なグリッドを作成するとします。アイテムの最後の行にいつあるかを知り、CSS ルールを適用したい。8 番目の項目ごとに、以下のコードを使用して追加の CSS ルールを適用できます。

$cnt=1;
foreach ($characters as $index => $character){
   if ($cnt % 8==0) echo "newline";
   $cnt++;
}

私は 30 文字しかないので、3 行で 4 行目が短くなります (アイテムは 6 つしかありません)。24 ~ 30 のすべての文字を最後の行に属するものとしてフラグを立てるにはどうすればよいですか。総文字数は常に異なります。

4

4 に答える 4

2
$rowCount = 8; // the number of items per row
$lastRowStarts = intval(floor(count($characters) / $rowCount)) * $rowCount;
// e.g: floor(30 / 8) * 8 = 3 * 8 = 24 = <index of first item in last row>

$index = 1;
foreach ($characters as $character) {
   if ($index >= $lastRowStarts) echo "last line";

   $index++;
}
于 2012-11-12T20:58:50.233 に答える
0
$cnt=1;
$length = strlen($characters);//if a string
//$length = count($characters);//if an array
foreach ($characters as $index => $character){
   if ($cnt % 8==0) echo "newline";
   if($index > ($length - 8))//or whatever number you want
   {
      echo 'flagged';//flag here however
   }
   $cnt++;
}
于 2012-11-12T20:59:21.887 に答える
0

これは、行の長さが8である限り、任意のサイズの文字で機能します。これは$cnt、ループカウンターを保持する変数であると想定しています。

$count = count($charchters)

foreach ($characters as $index => $character){
   if ($cnt % 8==0) echo "newline";
   if ($cnt < $count && $cnt > ($count - $count % 8)) echo "This is on the last row";
}
于 2012-11-12T21:00:14.127 に答える
0

array_popそれらを手探りした後、最後の行を取得するために使用できますarray_chunk

header("Content-Type: text/plain");

$characters = range(1, 30); // Generate Random Data
$others = array_chunk($characters, 8); //Break Them apart
$last = array_pop($others); //Get last row

foreach ( $others as $characters ) {
    echo implode("\t", $characters), PHP_EOL;
}

print_r($last); // Do anything you want with last row

出力

1   2   3   4   5   6   7   8
9   10  11  12  13  14  15  16
17  18  19  20  21  22  23  24

最後の行

Array
(
    [0] => 25
    [1] => 26
    [2] => 27
    [3] => 28
    [4] => 29
    [5] => 30
)
于 2012-11-12T21:05:26.437 に答える