PHP日期减法仅适用于While循环的第一次迭代

时间:2018-08-07 02:28:47

标签: php date-math

我有后缀有“ mmdd”的mySQL表。我需要遍历并将该“ mmdd”值存储在数组中,以备不时之需。问题是1天的日期减法仅在第一次迭代中起作用。我已经尝试了很多方法-作为我课堂上的函数,等等;但是,它只减去1天。一定是更好的方法。

>>> seen = set()
>>> emails = []
>>> for i in rm_dict:
...     body = i['body'][0]
...     if body not in seen:
...         emails.append(i)
...         seen.add(body)
...         

>>> emails
[{'name': 'rick',
  'subject': 'adventure time mortttty buugh',
  'body': ['wubba lubba dub dubbb motha f*&^%!']},
 {'name': 'morty',
  'subject': 're:adventure time mortttty buugh',
  'body': ['youre drunk rick!']}]

1 个答案:

答案 0 :(得分:0)

如果您要操作日期,通常在PHP中使用DateTime类要好得多。

假设$datesplit[1]包含类似'0806'(对于8月6日),我将把您的代码更改为以下形式:

$i = 0;
$newday = array();
$dtset = DateTime::createFromFormat('md', $datesplit[1]);
if ($current === 'Y') {
    do {      
        $newday[$i] = $dtset->format('md');      
        $sqlstmt = "select * from dbname.mytable_".$newday[$i];
        $resultchk = $db->query($sqlstmt);
        $dtset->sub(new DateInterval('P1D'));
        $i++;           
    } while(mysqli_num_rows($resultchk) > 0);
}