Цикл по массиву с разрывами строк каждый 6-й элемент в виде таблицы?

#php #sorting

#php #сортировка

Вопрос:

Я пытаюсь распечатать массив, чтобы каждый 6-й элемент находился на новой строке. Я пытаюсь сделать это в таблице. Я бы предпочел, если бы на него можно было ответить на PHP, но Javascripts Ok.

 $array_control = array(
"1","5","6","2","1",
"2","1","6","4","3",
"3","2","5","6","6",
"4","3","1","5","4",
"6","4","2","3","6"
);
$arrayLength = count($array_control);

    $i = 0;

    while ($i < $arrayLength)
    {
        if ($i==0) {
            echo "<tr>";
        }
       if (is_int($i/5)) {
         echo '<td style="width:16%;">'.$array_control[$i].'</td>';
         echo "</tr>";
            echo "<tr>";

        }else{
             echo '<td style="width:16%;">'.$array_control[$i-1].'</td>';

        }

        $i  ;


    }
 

Любая помощь была бы отличной!

Ответ №1:

% -operator (модуль) решает это за вас:

 echo '<table><tr>';
for($i = 1; $i <= count($array_control); $i   ){
    echo '<td style="width:16%;">';
    if( ($i % 6) == 0){
        echo $array_control[$i-1] . '</td></tr><tr>';  
    } else{
        echo $array_control[$i-1] . '</td>';
    }
}
echo '</tr></table>';
 

или, если вы чувствуете себя нахально:

 echo '<table><tr>';
for($i = 1; $i <= count($array_control); $i   ){
    echo '<td style="width:16%;">' . $array_control[$i-1], ( ($i % 6) == 0 ) ? '</td></tr><tr>' : '</td>';
}
echo '</tr></table>';
 

Ответ №2:

for Цикл кажется лучше, и, возможно mod , оператор более понятен.

 echo '<tr>';
for ($i < = 0; i < $arrayLength;    $i) {
    echo '<td style="width:16%;">'.$array_control[$i].'</td>';
    if ($i % 6 == 5) {
        echo '</tr>';
        echo '<tr>';
    }
}
echo '</tr>';
 

Это не совсем идеально, потому что в конце вы получите пустое «», но браузер должен это скрыть. Можно добавить немного больше логики, если вам нужно устранить и это.

Кроме того, с помощью структуры массива, которую вы показываете, вы можете $arrayLength полностью исключить переменную и вместо этого использовать:

 foreach ($array_control as $i => $val) {
    echo '<td style="width:16%;">'.$val.'</td>';
 

Комментарии:

1. Спасибо, я не был уверен, потому что я не понимаю циклов foreach, но теперь я получаю лучшее представление о том, как они работают.