Цикл массива с разрывами строк каждого 6-го элемента в виде таблицы? - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь напечатать массив, чтобы каждый 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++;


    }

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

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Оператор % (модуль) решает это для вас:

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>';
0 голосов
/ 17 апреля 2019

Цикл 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>';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...