这可能看起来很简单,但它现在让我头疼。
<?php
$sql = DB::query("SELECT `post_id` FROM `table` LIMIT 0,9");
foreach ($sql as $row){
$id = $row["post_id"];
}
这是我想要达到的输出:
<div class="row">
<li>1</li>
<li>2</li>
<li>3</li>
</div>
<div class="row">
<li>4</li>
<li>5</li>
<li>6</li>
</div>
<div class="row">
<li>7</li>
<li>8</li>
<li>9</li>
</div>
基本上,每3个元素都要封装在自己的div中。
怎么做呢?
我想你正在寻找一个类似的算法。它将在1
处加入一个打开的<div>
,在3
处加入一个关闭的<div>
。你必须容纳有余数的数字:
// Set the start at 1
$i = 1;
foreach ($sql as $row){
// If the loop hits 1, add <div>
if($i == 1)
echo '<div>'.PHP_EOL;
echo $id = "t<li>".$row["post_id"].'</li>'.PHP_EOL;
// If the loop hits 3, add </div>
if($i == 3) {
echo '</div>'.PHP_EOL;
// Reset the counter
$i = 0;
}
// Increment up
$i++;
}
带有随机数的将给出如下内容:
<div>
<li>309781723</li>
<li>1591425966</li>
<li>1922824365</li>
</div>
<div>
<li>1861766038</li>
<li>2065624155</li>
<li>504061231</li>
</div>
<div>
<li>143488299</li>
<li>806735480</li>
<li>605627018</li>
</div>
<div>
<li>1305718337</li>
<li>2080669131</li>
<li>314748482</li>
</div>
下面是另一个示例:在动态表中显示数组中的数据PHP
你也可以做一个类似的array_chunk()
。在这个场景中,您不需要任何计算来容纳余数:
// Split into sets of 3
$arr = array_chunk($sql,3);
$a = 0;
// You could probably do an array_map() but I am not experienced enough
// with array_map() to do it efficiently...or even at all, to be perfectly honest
foreach($arr as $row) {
for($i = 0; $i < count($row); $i++)
$new[$a][] = $row[$i]['post_id'];
// Assemble the rows via implode
$nRow[] = "t<li>".implode("</li>".PHP_EOL."t<li>",$new[$a])."</li>".PHP_EOL;
$a++;
}
// Implode with <div> wrappers
echo "<div>".PHP_EOL.implode("</div>".PHP_EOL."<div>".PHP_EOL,$nRow)."</div>";