php - 如何使用周数来选择唯一记录ID的MYSQL PHP

标签 php mysql date

不确定我的标题是否准确地解释了我想要做的事情,但这是我的用例:

我有一个包含 Id 1 = n 的数据库,我们称其为 500 条记录。

我想首先获取 PHP 中的周数 $week = date('W') 所以本周是 48

然后我想返回 3 个唯一的 ID,它们总是返回该周相同的 ID。例如。

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

等等。

我的方法是从第 1 周开始,指定 3 个 Id,然后将第 2 周的周乘以 2,然后接下来的每一周继续乘以 2 并添加 $i = 1每周递增 $i++ 并从起始编号中选择接下来的 3 个 Id。我的下面的解决方案似乎有效,但感觉有点做作。

$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 )

这就是我想要的,但是有没有更简单更干净的方法?而且,需要额外帮助如果它可以处理具有非顺序 ID 的表,那就会好得多。就我而言,我的 ID 需要是连续的,如果我在 Id 的 EX: 1,2,3,4,6,7,8,10 中出现中断,就会弄乱输出数组。

感谢您的帮助。

最佳答案

不需要将所有星期存储在数组中,一个简单的函数就可以完成这项工作:

$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
)

关于php - 如何使用周数来选择唯一记录ID的MYSQL PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53574419/

相关文章:

r - 从日期变量创建月末日期

r - 将十进制日转换为 HH :MM

php - 在 Yii 中,您可以用 JSON 而不是 HTML/XML 返回 HTTP 错误响应吗?

php - 将 PHP 5.3.3 从源代码编译到 Apache

php - MySQL 表不支持 FULLTEXT 索引

PHP PDO/MySQL : Dropdown values from database table cannot be inserted to another table

PHP/MySQL 选择查询问题

java - 在验证日期方面需要帮助

MySQL EXISTS() 真的很慢

php - 运行多个 PHP MySQL 查询