【发布时间】:2015-05-27 18:52:44
【问题描述】:
这是我遇到的错误。
致命错误:允许的内存大小已用完。
我正在获取包含日期 from 和日期 till 的数组。我正在尝试获取介于两者之间的所有日期并将它们添加到新数组中。显然嵌套循环和多数组很累。
我需要一种不那么费力的方法来获取所有日期。
这是我的代码:
$query = "SELECT *
FROM reservate
ORDER BY from";
$result = $connect->query($query);
$reservations = array();
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$reservations[] = $row;
}
}
$connect->close();
//AVAILABILITY CHECK
$nonAvailable = array();
foreach($reservations as $reservation){
$from = $reservation['from'];
$till = $reservation['till'];
while($from <= $till){
$nonAvailable[] = $from;
$from = date('Y-m-d', strtotime("+1 days"));
}
}
【问题讨论】:
-
虽然我认为@robbmj 已经发现了这个问题,但这些日期范围有多大?它们是用来做什么的?如果您只是在进一步查询中找到不可用的日期,那么可以只返回不可用的日期作为 SQL 查询的结果。
-
我测试的日期在 8 天左右。最终它将不得不处理最多 2 个月的日期范围。至于 sql,我还没有花太多精力学习比基础知识更多的东西。我最终的目标是:我有一个生成的日历,我想突出显示不可用的日期。我或多或少地让它工作了,但不得不做出一些改变。
-
我会写一个额外的答案给你一些想法,尽管已经接受的答案是对你实际问题的完美答案。
标签: php mysql multidimensional-array out-of-memory nested-loops