在尝试使用php查找sat或sun时收到错误

时间:2013-09-27 12:18:11

标签: php while-loop

我想找一个由用户提供的日子,我收到错误:

  

致命错误:允许的内存大小耗尽134217728个字节(试图分配79个字节)

$days = $array('saturday','sunday'); // it's dynamic array

if(sizeof($days)>0) {

  foreach($days as $key => $value) {
    $start  = strtotime("today"); // your start/end dates here
    $end    = strtotime("today +6 years");
    $friday = strtotime(strtolower($value), $start);

    while($friday <= $end) {
      //$daysbox[] = date("Y-m-d", $friday);                
    }
  }

}

2 个答案:

答案 0 :(得分:1)

你的while循环中绝对没有任何事情发生。你的代码将在while循环中点击,你就会陷入无限循环。

答案 1 :(得分:1)

while($friday <= $end) {
    $daysbox[] = date("Y-m-d", $friday);                
}

假设当该行没有被注释掉时它会以这种方式崩溃:(否则你会有一个无限循环,但它不会因你描述的错误而崩溃)。

您没有更改$friday,您没有更改$end。这意味着如果条件为真,则它将继续保持为真。您所做的只是向数组添加内容。如果这样做无数次,迟早会耗尽内存。

您可能想要更改while循环中的$friday变量,如下所示:

while($friday <= $end) {
    $friday = strtotime("+1 weeks", $friday);
}