#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, но теперь я получаю лучшее представление о том, как они работают.