Php 实际需要与周id对应的3行吗?如果是这样的话,查询可以大大简化,并且可以省略大量代码膨胀。您总是在查询中查找本周的id,还是由用户的选择决定?请澄清你的问题。我保证这是值得做的。谢谢你这么好奇,作为一个新的程序员,很难找到帮助。用例是为一个网站检索3条内容
Php 实际需要与周id对应的3行吗?如果是这样的话,查询可以大大简化,并且可以省略大量代码膨胀。您总是在查询中查找本周的id,还是由用户的选择决定?请澄清你的问题。我保证这是值得做的。谢谢你这么好奇,作为一个新的程序员,很难找到帮助。用例是为一个网站检索3条内容,php,mysql,date,Php,Mysql,Date,实际需要与周id对应的3行吗?如果是这样的话,查询可以大大简化,并且可以省略大量代码膨胀。您总是在查询中查找本周的id,还是由用户的选择决定?请澄清你的问题。我保证这是值得做的。谢谢你这么好奇,作为一个新的程序员,很难找到帮助。用例是为一个网站检索3条内容,但我希望这些内容在选择下3条之前在网站上保留一周。因此,每周都有人返回该网站,新内容会一直显示,直到52周全部完成,理论上我会回到第一周。所以要回答你的问题,是的,我只需要3个身份证就可以了“我在网站上只显示了3条内容。听起来我的$limit
实际需要与周id对应的3行吗?如果是这样的话,查询可以大大简化,并且可以省略大量代码膨胀。您总是在查询中查找本周的id,还是由用户的选择决定?请澄清你的问题。我保证这是值得做的。谢谢你这么好奇,作为一个新的程序员,很难找到帮助。用例是为一个网站检索3条内容,但我希望这些内容在选择下3条之前在网站上保留一周。因此,每周都有人返回该网站,新内容会一直显示,直到52周全部完成,理论上我会回到第一周。所以要回答你的问题,是的,我只需要3个身份证就可以了“我在网站上只显示了3条内容。听起来我的
$limit\u offset
解决方案最适合您的任务。否则你就得把整张桌子卸下来,只为了够到三排。我不怕哈哈,但我从来没有做过这样的事。很酷;我要玩它。非常感谢。我想我的下一个问题是:接下来如何使用这些逗号分隔的ID?不仅仅是将它们打印到屏幕上,是吗?向您提供我最好的建议完全取决于理解您从开始到结束的编码要求。@Jeff您的代码的独立目标是什么?您是否只需要与周id对应的3行?如果是这样的话,查询可以大大简化,并且可以省略大量代码膨胀。您总是在查询中查找本周的id,还是由用户的选择决定?请澄清你的问题。我保证这是值得做的。谢谢你这么好奇,作为一个新的程序员,很难找到帮助。用例是为一个网站检索3条内容,但我希望这些内容在选择下3条之前在网站上保留一周。因此,每周都有人返回该网站,新内容会一直显示,直到52周全部完成,理论上我会回到第一周。所以要回答您的问题,是的,我只需要3个Id,因为我在网站上只显示了3条内容。听起来我的$limit\u offset
解决方案最适合您的任务。否则,您将卸载整个表,只需访问三行。
Week 1 = Id's 1,2,3
Week 2 = Id's 4,5,6
Week 3 = Id's 7,8,9
Week 4 = Id's 10,11,12
Week 5 = Id's 13,14,15
Week 6 = Id's 16,17,18
$weeks = array(1,2,3,4,5,6,7);
$output_arr = array();
$ids_arr = array();
$id1 = 1;
$id2 = $id1 + 1;
$id3 = $id1 + 2;
$i = -1;
foreach ($weeks as $week) {
if ($week == 1) {
$ids = array($id1, $id2, $id3);
$ids = implode(', ', $ids);
} else {
$id1 = $week * 2 + $i;
$id2 = $id1 + 1;
$id3 = $id1 + 2;
$ids = array($id1, $id2, $id3);
$ids = implode(', ', $ids);
}
$output_arr[$week] = $ids;
$i++;
}
$output_arr = Array ( [1] => 1, 2, 3 [2] => 4, 5, 6 [3] => 7, 8, 9 [4] => 10, 11, 12 [5] => 13, 14, 15 [6] => 16, 17, 18 [7] => 19, 20, 21 )
$ids = array(1,2,3,4,6,7,8,10);
function weekIds($pWeek){
$wids = array();
for($i=1;$i<=3;$i++)
$wids[] = ($pWeek-1)*3+$i;
return $wids;
}
$seq = weekIds(2);
foreach($seq as $s)
$nonSeq[] = $ids[$s-1];
echo 'Sequential: ' .print_r($seq,true).PHP_EOL;
echo 'Non-Sequential: ' .print_r($nonSeq,true);
Sequential: Array
(
[0] => 4
[1] => 5
[2] => 6
)
Non-Sequential: Array
(
[0] => 4
[1] => 6
[2] => 7
)
SELECT
CEIL(r / 3) AS WeekId, GROUP_CONCAT(id) AS Ids
FROM (
SELECT
@rowid := @rowid + 1 AS r, id
FROM tableA
CROSS JOIN (
SELECT @rowid := 0
) cjoin
) sub
GROUP BY WeekId
| WeekId | Ids |
| ------ | ----- |
| 1 | 1,2,3 |
| 2 | 4,6,7 |
| 3 | 8,10 |
$limit_offset = ceil(date('W') / 3) - 1;
$query = "SELECT id FROM your_table ORDER BY id LIMIT $limit_offset, 3";