Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php将列表分块显示?_Php_Foreach - Fatal编程技术网

如何使用php将列表分块显示?

如何使用php将列表分块显示?,php,foreach,Php,Foreach,我希望显示一个(平面)记录列表,分为3个项目,如下所示: <div class="wrapper"> <div id="item1"></div> <div id="item2></div> <div id="item3"><div> </div> <div class="wrapper"> <div id="item4"></div> <

我希望显示一个(平面)记录列表,分为3个项目,如下所示:

<div class="wrapper">
  <div id="item1"></div>
  <div id="item2></div>
  <div id="item3"><div>
</div>

<div class="wrapper">
  <div id="item4"></div>
  <div id="item5></div>
  <div id="item6"><div>
</div>

这些项1到n将从数据库查询中检索

问题在于包装器div。 似乎我需要在n个卡盘中为每个切割一个

我能推一下吗?

你是说

array_chunk($arr, 3);
$end=20;
对于($count=1;$count)

这是你想要的吗

for($i=1 ; $i<= n ; $i++){
  if($i%3 == 0) {
      echo '<div class="wrapper">';
  }
  echo '<div id="item'.$i.'"></div>';
  if($i%3 == 0) {
     echo '</div>';
  }
}
($i=1;$i



按…一个循环和
%
模数运算符。@abracadver谢谢。。)我会看一看。我发现这个问题很不清楚,不确定你想要达到什么目的。@JackWilliams为了澄清,我需要了解你不清楚的地方。我只是不明白你的目标是什么,你没有提供太多背景,也许只是我,这就是为什么我没有否决投票。我看到array_chuck的
是真的
参数,它允许我们保留
索引
,但是…我如何使用它来回显我想要的内容呢?我真的需要将数组分割成卡盘吗?我同意!不要有条件地回显
您还有其他方法吗?您的变量甚至不是
$
,并且您的逻辑完全不正确。这就是just打字错误。这并不比逻辑重要。为什么要否决?@Technonol因为如果你真的测试了这段代码,你会注意到它没有输出任何接近正确答案的东西:
我喜欢你的代码组织。但是我使用的是foreach,而这些div在这个例子中虽然简单,但在实际情况下却非常复杂,所以它会更好r要清楚地将php与html分开…你认为,你的代码可以重新安排以满足这些要求吗?我想快速测试和使用php,以尝试这些和其他可能性。我使用的是一个沉重的框架结构,使得测试这些小东西有点困难。你是如何做到的?谢谢。@MEM我更新了我的代码,以分离PHP from HTML…看看我更新的答案。我会好好研究它。非常感谢。答案已经被接受。@MEM你可以用它来测试小的php代码片段。我喜欢你的方法,但是如果我用10个属性和N个类来回显div,在这些标记上声明,我会在一个巨大的字符串上得到大量的
\N\t
,这使得我很难找到答案调试…我更喜欢将html与php明确分开。我已经更新了一个直接使用html而不是使用
echo
语句的示例。我接受了Arian,因为这是我寻求的第一个答案。感谢您的选择,它也将允许我学习。
$end = 20;

for($count = 1; $count <= $end; $count++){

    if(($count % 3) == 1){
        ?>
            <div class="wrapper">
        <?php
    }

    ?>

    <div id="item<?=$count?>"></div>

    <?php
    if(($count % 3) == 0 || $count == $end){
        ?>
            </div>
        <?php
    }
}
for($i=1 ; $i<= n ; $i++){
  if($i%3 == 0) {
      echo '<div class="wrapper">';
  }
  echo '<div id="item'.$i.'"></div>';
  if($i%3 == 0) {
     echo '</div>';
  }
}
<?php
function renderWrapperStart($i) {
    if ($i % 3 !== 0) {
        return;
    }
?>
    <div class="wrapper">
<?
}

function renderWrapperEnd($i) {
    if ($i % 3 !== 0 || $i == 0) {
        return;
    }
?>
    </div>
<?
}

function renderItem($i, $id, $content) {
?>
    <div id="<?= $id ?>"><?= $content ?></div>
<?
}

$items = array(
    'item1' => 'content 1',
    'item2' => 'content 2',
    'item3' => 'content 3',
    'item4' => 'content 4',
    'item5' => 'content 5',
    'item6' => 'content 6'
);

$i = 0;

foreach ($items as $id => $content) {
    renderWrapperEnd($i);
    renderWrapperStart($i);
    renderItem($i, $id, $content);
    $i++;
}

renderWrapperEnd($i);
?>
<div class="wrapper">
        <div id="item1">content 1</div>
        <div id="item2">content 2</div>
        <div id="item3">content 3</div>
</div>

<div class="wrapper">
        <div id="item4">content 4</div>
        <div id="item5">content 5</div>
        <div id="item6">content 6</div>
</div>