我正在尝试生成一个年表,每个年表被分成5年一组。我希望每次排序5年,就像在示例中期望的输出...This是我到目前为止得到的。
<?php
$chunkSize = 5;
$starting_year = 2006;
$ending_year = date("Y");
//create an array of years
$years = range($ending_year,$starting_year);
//[2006,2007,....,2016,2017]
//split years in required size
$chunked = array_chunk($years,$chunkSize);
//[ [2013,....,2017], [2008,...2012], [2006,2007]]
echo "<table class='table table-striped table-bordered'><tbody>";
foreach($chunked as $chunk) {
echo "<tr>";
foreach($chunk as $year) {
echo "<th>{$year}</th>";
}
echo "</tr><tr>";
foreach($chunk as $year) {
echo "<td>test</td>";
}
echo "</tr>";
}
echo "</tbody></table>";电流输出
2017 2016 2015 2014 2013
test test test test test
2012 2011 2010 2009 2008
test test test test test
2007 2006
test test期望输出
2013 2014 2015 2016 2017
test test test test test
2008 2009 2010 2011 2012
test test test test test
2006 2007
test test编辑:
我试过了
<?php
$chunkSize = 5;
$starting_year = 2006;
$ending_year = date("Y");
//create an array of years
$years = range($ending_year,$starting_year);
//[2006,2007,....,2016,2017]
//split years in required size
$chunked = array_chunk($years,$chunkSize);
//[ [2013,....,2017], [2008,...2012], [2006,2007]]
//reverse it
$reversed = array_reverse($chunked);
echo "<table class='table table-striped table-bordered'><tbody>";
foreach($reversed as $reverse) {
echo "<tr>";
foreach($reverse as $year) {
echo "<th>{$year}</th>";
}
echo "</tr><tr>";
foreach($reverse as $year) {
echo "<td>test</td>";
}
echo "</tr>";
}
echo "</tbody></table>";输出
2007 2006
test test
2012 2011 2010 2009 2008
test test test test test
2017 2016 2015 2014 2013
test test test test test发布于 2017-07-20 23:56:03
并不是说这种方式一定会更好,但仅供参考,您可以在没有任何数组或分块或反转的情况下做到这一点。从初始定义的值开始:
$chunkSize = 5;
$starting_year = 2006;
$ending_year = date("Y");确定需要多少行
$rows = ceil(($ending_year - $starting_year) / $chunkSize);然后使用for循环迭代该数量的行。
for ($i = 0; $i < $rows; $i++) {
// determine the starting year for the current row
$start = max($starting_year, $ending_year - $chunkSize + 1);
// output the th and td rows for each row
for ($td = 0; $td < 2; $td++) {
// output the years and 'test' values for the current row
echo '<tr>';
for ($year = $start; $year <= $ending_year; $year++) {
echo $td ? '<td>test</td>' : "<th>$year</th>";
}
echo '</tr>';
}
// decrement the ending year for the next iteration
$ending_year -= $chunkSize;
}发布于 2017-07-20 23:27:55
<?php
$chunkSize = 5;
$starting_year = 2006;
$ending_year = date("Y");
//create an array of years
$years = range($ending_year,$starting_year);
//[2006,2007,....,2016,2017]
//split years in required size
$chunked = array_chunk($years,$chunkSize);
//[ [2013,....,2017], [2008,...2012], [2006,2007]]
echo "<table class='table table-striped table-bordered'><tbody>";
foreach($chunked as $chunk) {
$chunk = array_reverse($chunk);
echo "<tr>";
foreach($chunk as $year) {
echo "<th>{$year}</th>";
}
echo "</tr><tr>";
foreach($chunk as $year) {
echo "<td>test</td>";
}
echo "</tr>";
}
echo "</tbody></table>";https://stackoverflow.com/questions/45218759
复制相似问题