例如,我想明智地添加foreach条目序列 假设我的数组像这样
<?php $arr = array('111','222','333','444','555','666','777','888','999'..so on)?>
现在使用foreach我想输入这样的数组
<div>
<p>111</p>
<p>555</p>
<p>999</p>
</div>
<div>
<p>222</p>
<p>666</p>
</div>
<div>
<p>333</p>
<p>777</p>
</div>
<div>
<p>444</p>
<p>888</p>
</div>
有可能吗?我很困惑怎么做?
答案 0 :(得分:1)
以下是执行方法。
首先创建拆分数组,将必要的元素分组为4组。然后在第二个foreach中,每个都被格式化。这是一个例子,在大型数据阵列中可能不是很有效。
$arr = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'];
$split = [];
foreach ($arr as $k => $v) {
$split[$k % 4][] = $v;
}
$out = '';
foreach ($split as $row) {
$out .= '<div>';
foreach ($row as $e) {
$out .= '<p>' . $e . '</p>';
}
$out .= '</div>';
}
答案 1 :(得分:0)
你可以采用另一种方式,类似于tilz0R
<?php $rowArray = array();
$counter = 1;
foreach ($arr as $item){
$rowArray[$counter][] = $item;
if ($counter == 3){$counter = 1;}else{$counter++;}
}
foreach ($rowArray as $row)
{
?><div>
<?php foreach ($row as $item)
{
?><p><?= $item?></p>
<?php }?></div><?php
};?>
答案 2 :(得分:0)
您可以使用array_walk:
const NB_ROWS = 4;
for ($row = 0; $row < NB_ROWS; $row++) {
echo "<div>\n";
array_walk($arr, function($item, $key, $row) { if($key % NB_ROWS == $row) echo "<p>$item</p>\n"; }, $row);
echo "</div>\n";
}
或者更清楚:
定义一个只打印给定行元素的函数:
function printRow($item, $key, $row)
{
if($key % 4 == $row) {
echo "<p>$item</p>\n";
}
}
然后为每一行调用一次:
for ($row = 0; $row < 4; $row++) {
echo "<div>\n";
array_walk($arr, 'printRow', $row);
echo "</div>\n";
}