把每个容器包裹起来



也许是一个简单的问题。我有一个简单的php foreach脚本,输出结果很好。我需要包装的结果与容器div为每第二个项目。例如:

脚本是什么样子的

$result = $wpdb->get_results('SELECT id, fdate, tdate FROM database');
$i = 0;
foreach ($result as $date):
   $i++; 
   echo '<div class="range" data-range="'. $date->id .'">';
   echo 'test';
   echo '</div>';
endforeach;

将输出:

<div class="range" data-range="00000000"></div>
<div class="range" data-range="00000000"></div>
<div class="range" data-range="00000000"></div>
<div class="range" data-range="00000000"></div>
<div class="range" data-range="00000000"></div>
<div class="range" data-range="00000000"></div>

但我需要下面的例子:一个容器div围绕范围为每秒钟的结果。这样的:

<div class="container">
<div class="range" data-range="00000000"></div>
<div class="range" data-range="00000000"></div>
</div>
<div class="container">
<div class="range" data-range="00000000"></div>
<div class="range" data-range="00000000"></div>
</div>
<div class="container">
<div class="range" data-range="00000000"></div>
<div class="range" data-range="00000000"></div>
</div>

I tried with:

$result = $wpdb->get_results('SELECT id, fdate, tdate FROM database');
$i = 0;
foreach ($result as $date):
   $i++; 
   if($i%2 == 0) {
     echo $i > 0 ? "</div>" : "";
     echo "<div class='container'>";
   }
   echo '<div class="range" data-range="'. $date->id .'">';
   echo 'test';
   echo '</div>';
endforeach;

但这将不能正常工作的结果,我正在寻找:)想法吗?div =)

这段代码应该能满足您的需求

$result = $wpdb->get_results('SELECT id, fdate, tdate FROM database');
$i = 0;
foreach ($result as $date):
   $i++;
   if($i%2 == 1) {
       echo '<div class="container">';
   }
   echo '<div class="range" data-range="'. $date->id .'"></div>';
   if($i%2 == 0) {
       echo '</div>';
   }
endforeach;

你真的很接近。:)

你想让你的容器在foreach循环外回显。

$result = $wpdb->get_results('SELECT id, fdate, tdate FROM database');
$i = 0;
echo '<div class="container">';
foreach ($result as $date):
   $i++;
   echo '<div class="range" data-range="'. $date->id .'">';
   echo 'test';
   echo '</div>';
endforeach;
echo '</div>';
编辑:对不起,我误解了你的问题,但仍然很简单。
$result = $wpdb->get_results('SELECT id, fdate, tdate FROM database');
$i = 0;
foreach ($result as $date):
   $i++; 
   if($i%2 == 1) {
     echo "<div class='container'>";
   }
   echo '<div class="range" data-range="'. $date->id .'">';
   echo 'test';
   echo '</div>';
   if($i%2 == 0) {
     echo "</div>";
   }
endforeach;
编辑2:哇,这真的没有那么简单。如果有奇数个结果,您将不会关闭最后一个标签。所以,你需要THIS:
$result = $wpdb->get_results('SELECT id, fdate, tdate FROM database');
$i = 0;
foreach ($result as $date):
   if($i%2 == 0) {
     echo "<div class='container'>";
   }
   echo '<div class="range" data-range="'. $date->id .'">';
   echo 'test';
   echo '</div>';
   if($i%2 == 1) {
     echo "</div>";
   }
   $i++; 
endforeach;
if($result->Size() % 2 == 1)
{
    echo '</div>';
}
<?php
define ('TEMPLATE_SUB_CONTAINER',   '<div class="range" data-range="%s">%s</div>');
define ('TEMPLATE_CONTAINER',       '<div class="container">%s</div>'); 
$result = $wpdb->get_results('SELECT id, fdate, tdate FROM database');
$i      = 0 ;
$buffer = '';
foreach ($result as $date):
   if ($i == 2) {
       flushBuffer($buffer);
       $buffer = '';
       $i=0;
   }
   $buffer .= sprintf(TEMPLATE_SUB_CONTAINER . '<br />', $date->id, 'test');
   $i++;
endforeach;
flushBuffer($buffer);
function flushBuffer($buffer) {
    if (strlen($buffer) > 0) {
        $buffer .= spintf(TEMPLATE_CONTAINER, $buffer);
        printf("%s", $buffer);
    }
}

最新更新