我有一个我正在运行的查询,它总是返回10个结果。
即:
SELECT
*
FROM
table
LIMIT 10
然后我循环查看结果。在他们每个人身上,我正在将它们调整为缩略图(10个缩略图)。在显示10个缩略图之前,对于第一个结果,我想调整它以使其变大。调整大小没有问题。它试图找出在输出10个缩略图之前如何隔离第一个。
我正在做类似下面的事情:
if($stmt->rowCount() != 0) {
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$id = $row['id'];
$filename = $row['filename'];
// take the first $filename result and resize it to make it larger
// resize $filename into thumbnails and output 10 thumbnails
}
}
基本上,它是一个排行榜,所有前10个条目都会显示出来,但第一个条目的大小会更大,以显示谁目前占据前十名的位置。
关于我可以在何处/如何隔离第一个结果的任何建议,以便我可以调整它的大小?
以下是我在概念上试图解释的一个例子:
答案 0 :(得分:2)
我的PHP有点沙哑,但为什么不跟踪你在哪个迭代?比这更简单的是保留一个布尔值,但我把它作为读者的练习。
$x = 0
if($stmt->rowCount() != 0) {
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$id = $row['id'];
$filename = $row['filename'];
if ($x++ == 0)
// take the first $filename result and resize it to make it larger
// resize $filename into thumbnails and output 10 thumbnails
}
}
答案 1 :(得分:1)
$i=0;
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$id = $row['id'];
$filename = $row['filename'];
if ($i++ == 0) {
// take the first $filename result and resize it to make it larger
}
// resize $filename into thumbnails and output 10 thumbnails
}
答案 2 :(得分:0)
有一个简单的布尔跟踪它,int可以工作,但不需要继续增加它
$firstReached = False;
if($stmt->rowCount() != 0) {
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
if(!$firstReached)
{
// do the thing for first row
$firstReached = True;
}
else
{
// do the thing for remaining rows
}
}
答案 3 :(得分:0)
不是在循环中测试是否处理第一张图像,而是单独处理第一张图像。在循环中包含一个有效只能在一次迭代中实现的测试条件对我来说似乎是一种误解。
将调整图像大小的逻辑放入自己的函数中,使代码重用更容易。
这样的事情:
if($stmt->rowCount() != 0) {
// this gets the first row
$row = $stmt->fetch(PDO::FETCH_ASSOC);
// take the first $filename result and resize it to make it larger
resizeImage($row['id'], $row['filename'], 'large');
// we always want to create a thumbnail, hence do-while
do {
// resize $filename into thumbnails and output 10 thumbnails
resizeImage($row['id'], $row['filename'], 'thumbnail');
} while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
}
function resizeImage(id, name, type) {
// whatever here
}