簡體   English   中英

對於每個循環增量超過一個PHP

[英]for each loop increment more than one in php

我有一個類在php中返回記錄數。 我用桌子來顯示這樣的名字

foreach($getArtist as $getArtist)
{
echo "<tr><td>".$getArtist['name']."</td></tr>";
}

這可以正常工作並在一行中顯示每個名稱

現在我想在一行中顯示3個名字

foreach($getArtist as $getArtist)
{
echo "<tr>";
echo "<td>".$getArtist['name']."</td>";
echo "<td>".$getArtist['name']."</td>";
echo "<td>".$getArtist['name']."</td>";
echo "</tr>";
}

但這顯示每個名稱3次,但是我需要在一行中顯示3個名稱,然后在另一行中顯示其他3個名稱,並在記錄完成循環完成時

解決這一問題的幾種方法。 一種方法是拆分/分塊數據行。

$rowSize = 3;
$rowsOfArtists = array_chunk($getArtists, $rowSize);

if ($youNeedYourTableBalanced) {
   $rows = intval(ceil(count($getArtists) / $rowSize));
   $paddedLength = $rows * $rowSize;
   $paddedArtists = array_pad($getArtists, $paddedLength, '&nbsp;');
   $rowsOfArtists = array_chunk($paddedArtists, $rowSize);
}

foreach ($rowsOfArtists as $artists)
{
    echo "<tr>";
    foreach ($artists as $getArtists)
    {
        echo "<td>" . $getArtist['name'] . "</td>";
    }
    echo "</tr>";
}

嘗試:

foreach (array_chunk($getArtist, 3) as $artists) {
  echo '<tr>';
  foreach (array_pad($artists, 3, array('name' => '&nbsp;')) as $artist) {
    echo '<td>' . $artist['name'] . '</td>';
  }
  echo '</tr>';
}

編輯快速將DaveRandoms修復程序插入Phils評論 ;)

這是另一種方法。 嘗試復習概述的每種方法,因為這是一項常見的編程任務,因此請確保您了解如何解決...

VAR $ctr = 0;
VAR $outLine = "";


    foreach($getArtist as $getArtist)
    {
    $ctr = $ctr +1;
    if ($ctr = 3)
       {
        echo "<tr>";
        echo $outline;
            echo "<td>".$getArtist['name']."</td>";
            echo "</tr>";
            $outline = "";
       }
    else
       { 
          $outline = $outline . "<td>".$getArtist['name']."</td>";
       }

    }

    if ($outline > "")
     {
        echo "<tr>";
        echo $outline;
            for ($i = $ctr; $i <= 3; $i++) {
                echo "<td>&nbsp;</td>";
             }
            echo "</td>";

     }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM