当count满足特定值时,如何在PHP foreach循环中插入end div

当count满足特定值时,如何在PHP foreach循环中插入end div,php,cakephp-2.0,Php,Cakephp 2.0,我有一个页面,列出了数据库中保存的一组问题和答案。因为这些页面将打印在A4上,所以问题和答案必须放在页面内。然而,由于系统的使用方式,答案相当长,超过了A4纸张的设定尺寸 我已经计算出,根据我的具体需要,每张A4纸的字数限制为680。我使用的测试数据已经超过了这一点,目前总共有972个单词 目前这是我正在使用的代码(请注意,每个答案和每个问题都有一个单独的字数记录): 管理信息 我想要实现的是,当PHP脚本通过它的foreach时,每次foreach中的问题和答案达到680个单词

我有一个页面,列出了数据库中保存的一组问题和答案。因为这些页面将打印在A4上,所以问题和答案必须放在页面内。然而,由于系统的使用方式,答案相当长,超过了A4纸张的设定尺寸

我已经计算出,根据我的具体需要,每张A4纸的字数限制为680。我使用的测试数据已经超过了这一点,目前总共有972个单词

目前这是我正在使用的代码(请注意,每个答案和每个问题都有一个单独的字数记录):


管理信息




我想要实现的是,当PHP脚本通过它的foreach时,每次foreach中的问题和答案达到680个单词时,就会插入一个end和start div,这样长的数据列表就会被正确地分割。如何实现这一点?

如果我理解正确,那么您只需要分配要迭代的变量,并在循环中与它进行比较

foreach($sqsi as $i => $si) { // note $i => 
        if($i == 679) echo '</div><div>'; ?>
        <p><strong><?php echo $si['Swmpquestion']['question']; ?></strong></p>
        <p><?php echo $si['Swmpanswer']['answer']; ?></p>
        <hr />
<?php }
foreach($sqsi作为$i=>$si){//注意$i=>
如果($i==679)回显“”;?>



你说你已经在计算单词数了,那么为什么不在第二个2个foreach循环中使用一个简单的if语句呢?而不是像你现在这样计算前两个foreach循环中的单词数。跟踪第二个2个foreach循环中的单词数,然后使用一个简单的if语句就可以了。类似这样的方法应该可以解决问题f我正确地理解了你:

<div class="page" style="page-break-before: always;">
<div class="smallheading">
    <h2>Management Information</h2>
</div>
<div class="content v2">
    <?php 
    $totalCharacters = 0;
    $totalcharacters1 = 0;
    $totalcharacters2 = 0;

    foreach($sqsi as $si) {
        $totalcharacters1 += $si['Swmpquestion']['wordcount'] + $si['Swmpanswer']   ['wordcount'];
    } foreach ($sqsicust as $wr) {
        $totalcharacters2 += $wr['Swmpanswer']['wordcount'] + $wr['Swmpanswer']['cqwordcount'];
    } 

    $totalCharacters = $totalcharacters1 + $totalcharacters2;           

    ?>

    <?php foreach($sqsi as $si) { 
$totalcharacters1 = $si['Swmpquestion']['wordcount'] + $si['Swmpanswer']  ['wordcount']
if($totalcharacters1 == 680){
echo "</div>";
echo "<div class="content v2">";
$totalcharacters1=0;
}
?>
        <p><strong><?php echo $si['Swmpquestion']['question']; ?></strong></p>
        <p><?php echo $si['Swmpanswer']['answer']; ?></p>
        <hr />
    <?php } foreach($sqsicust as $wr) {
$totalcharacters2 += $wr['Swmpanswer']['wordcount'] + $wr['Swmpanswer']['cqwordcount'];
if($totalcharacters2 == 680){
echo "</div>";
echo "<div class="content v2">";
$totalcharacters2=0;
} 
?>
        <p><strong><?php echo $wr['Swmpanswer']['custquestion']; ?></strong></p>
        <p><?php echo $si['Swmpanswer']['answer']; ?></p>
        <hr />
    <?php } ?>
</div>

管理信息




添加一个$i=0;//一个起点 和$qtyToLpThru=x;//即每25次迭代 在foreach之前。 在foreach中,在第一个{an if语句之后添加

foreach(){
  if (is_int($i/$qtyToLpThru)) && $i!=0) {
    echo '</div><div>';
  }
  $i++;
}
foreach(){
if(is_int($i/$qtyToLpThru))&&$i!=0){
回声';
}
$i++;
}
然后在最后一个}之前添加一个
$i++;

您的迭代将增加
$i
,并且每次if语句处理true时,您都将编写end和open div

foreach(){
  if (is_int($i/$qtyToLpThru)) && $i!=0) {
    echo '</div><div>';
  }
  $i++;
}