для каждого приращения цикла больше чем один в php - PullRequest
0 голосов
/ 13 сентября 2011

У меня есть один класс в 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 других имени в другом ряду и когда закончится цикл завершения записи

Ответы [ 3 ]

3 голосов
/ 13 сентября 2011

Попробуйте:

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 ;)

3 голосов
/ 13 сентября 2011

Несколько способов справиться с этим. Один из способов состоит в том, чтобы разделить / разделить на части строки данных.

$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>";
}
0 голосов
/ 13 сентября 2011

Вот другой подход. Попробуйте рассмотреть каждый из описанных подходов, потому что это обычная задача программирования, поэтому убедитесь, что вы понимаете, как ее решить ...

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>";

     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...