0

我正在使用PDO从数据库中获取结果,然后使用foreach循环来显示数据。

我的代码是

$result1=$objPage->getGallery($id);
foreach($result1 as $row)
{

    echo "pic1=" . $row['pic']; 
    echo "pic2=" . $row['pic']; 
    echo "pic3=" . $row['pic']; 
    echo "<br>";    
}

实际上,我想在一行中显示三个图片名称,然后是接下来的 3 个名称。

但现在它打印一个名字3次。

4

4 回答 4

2

做这样的事情:

$result1=$objPage->getGallery($id);
$count = 0;
foreach($result1 as $row)
{
    echo "pic" . $count + 1 . "=" . $row['pic']; 
    if( $count % 3 == 2 )
    {
        echo "<br>";    
    }
    $count++;
}

信息

  1. 模 %
于 2013-02-02T13:38:36.450 回答
2

首先,准备你的数据

$data = $objPage->getGallery($id);
$data = array_chunk($data,3);

然后输出

<table>
<? foreach($data as $chunk): ?>
  <tr>
<? foreach($chunk as $row): ?>
    <td><img src="<?=$row['pic']?>"></td>
<? endforeach ?>
  </tr>
<? endforeach ?>
</table>
于 2013-02-02T14:05:49.363 回答
1

您可以使用外部标志,如下所示:

$flag = 0;
$result1=$objPage->getGallery($id);
foreach($result1 as $row) {
    echo "pic" . ($flag + 1) . "=" . $row['pic'];
    if( $flag % 3 == 0 )
        echo "<br>";
    $flag++;   
}
于 2013-02-02T13:40:14.280 回答
1

您可以按照其他人的建议使用模数,但是这种更紧凑的方法怎么样?

$result1 = $objPage->getGallery($id);
$separators = array('', '', '<br/>');
foreach ($result1 as $index => $row) {
    echo 'pic' . ($index % 3) . '=' . $row['pic'] . $separators[$index % 3];
}
于 2013-02-02T13:41:23.970 回答