所以我正在尝试为约会网站处理礼物。您可以拥有的最大礼品数量为9,并且必须返回9个礼品范围,无论是从具有9个礼品的用户的数据库返回所有9个礼品,还是从数据库返回4个,以及从for循环返回剩余的5个礼品范围,或者来自db的0和来自for循环的所有9。查询mysql数据库并使用while循环输出用户拥有的礼物,而for循环则确保返回9个礼物总数,具体取决于while循环的输出(这当前未正确换行):
$i=0;
while($row = $user_gifts->fetch(PDO::FETCH_ASSOC)){
$i++;
$gift_name = $row["gift_name"];
if ($i%3==1) {
$gifts_show .= '<div>';
}
$gifts_show .= '<span>'.$gift_name.'</span>';
}
if($i<1){ //0 gifts from db, all 9 no gifts
$i=0;
for ($i = $i; $i < 9; $i++) {
if ($i%3==1) $gifts_show .= '<div>';
$gifts_show .= '<span>No Gift.</span>';
if ($i%3==0) $gifts_show .= '</div>';
}
} else { //1+ gifts from db, mix gifts with no gifts until 9 are reached
for ($i = $i; $i < 9; $i++) {
$gifts_show .= '<span>No Gift.</span>';
if ($i%3==0) $gifts_show .= '</div>';
}
}
每3件礼物应该用div包装。因此包含在3个div中的9个礼物的输出应如下所示:
<div>
<span>DB Gift 1</span>
<span>DB Gift 2</span>
<span>DB Gift 3</span>
</div>
<div>
<span>DB Gift 4</span>
<span>No Gift</span>
<span>No Gift</span>
</div>
<div>
<span>No Gift</span>
<span>No Gift</span>
<span>No Gift</span>
</div>
无论数据库输出多少礼物,都知道如何正确输出和包装div中的每3个跨度3次?
答案 0 :(得分:2)
这就是简单的数组操作。
让我们假设我有以下数组:
$array = array(
'DB Gift 1',
'DB Gift 2',
'DB Gift 3',
'DB Gift 4'
);
...但我想展示9个元素。首先,我用“空”元素填充它:
$array = array_pad($array, 9, 'No Gift');
...我希望在3个3块中显示它。所以我把它分成3个块:
$array = array_chunk($array, 3);
......现在只是将它们加在一起的简单案例。首先,我加入所有内在元素:
foreach ($array as &$block) {
$block = '<span>'.implode('</span><span>', $block).'</span>';
}
...然后我加入外部元素:
$result = '<div>'.implode('</div><div>', $array).'</div>';
完成工作。